類成員的顯式初始化

2021-06-23 02:44:06 字數 818 閱讀 3703

儘管大多數物件可以通過執行適當的建構函式進行初始化,但是直接初始化簡單的非抽象類的資料成員仍是可能的。對於沒有定義建構函式並且其全體資料成員均為 public 的類,可以採用與初始化陣列元素相同的方式初始化其成員:

struct data ;

// val1.ival = 0; val1.ptr = 0

data val1 = ;

// val2.ival = 1024;

// val2.ptr = "anna livia plurabelle"

data val2 = ;

根據資料成員的宣告次序來使用初始化式。例如,因為 ival 在 ptr 之前宣告,所以下面的用法是錯誤的:

// error: can't use "anna livia plurabelle" to initialize the int 

ival

data val2 = ;

這種形式的初始化從 c 繼承而來,支援與 c 程式相容。顯式初始化類型別物件的成員有三個重大的缺點。

1. 要求類的全體資料成員都是 public。

2. 將初始化每個物件的每個成員的負擔放在程式設計師身上。這樣的初始化是乏味且易於出錯的,因為容易遺忘初始化式或提供不適當的初始化式。

3. 如果增加或刪除乙個成員,必須找到所有的初始化並正確更新。

定義和使用建構函式幾乎總是較好的。當我們為自己定義的型別提供乙個預設建構函式時,允許編譯器自動執行那個建構函式,以保證每個類物件在初次使用之前正確地初始化。

類成員初始化

在類內部 初始化的順序 靜態的成員變數 普通的成員變數 構造器的呼叫。在派生類中 初始化的順序 呼叫基類的構造器 按宣告順序呼叫成員的初始化方法 呼叫派生類構造器主體 大多數類的初始化都是按照這些順序結合在一起的。下面是乙個例子 public class test extends sub publi...

類成員初始化

一 預設呼叫的無參建構函式 include include using namespace std class studentid class student int main 8 91011class student 20 2122 intmain 執行結果 重新設計建構函式,對s物件進行初始化,...

類的成員初始化

類的每個基本型別資料成員都有乙個初始值 類中定義乙個物件引用時,如果不初始化,此引用會獲得乙個特殊值 null。如下 public class initialvalues public static void main string args output data type initial val...