C++默认构造函数的使用

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

上述程式碼把我們帶往所謂的constructors。default constructor意指可以「不需任何引數就被喚起」者。這樣的一個constructor如果不是沒有任何參數,就是每個參數都有預設值。通常當你需要定義物件陣列時,就會需要一個default constructor:

class A {

public:

A(); // default constructor

};

A arrayA[10]; // 呼叫constructors 10 次

class B {

public:

B(int x = 0); // default constructor

};

B arrayB[10]; // 呼叫constructors 10 次,

// 每次都給引數0。

class C {

public:

C(int x); // 這不是一個default constructor

};

C arrayC[10]; // 錯誤!

或許有時候你會發現,某個class 的default constructor有預設參數值,你的編譯器卻拒不接受其物件陣列。例如某些編譯器拒絕接受上述arrayB 的定義,即使它其實符合C++ 標準。這是存在於C++ 標準規格書和實際編譯器行為之間的一個矛盾例子。截至目前我所知道的每一個編譯器,都有一些這類不相容缺點。在編譯器廠商追上C++ 語言標準之前,請保持你的彈性,並安慰自己,也許不久後的某一天,C++ 編譯器的表現就可以和C++ 標準規格書所描述的一致了。

附帶一提,如果你想要產生一個物件陣列,但該物件型別沒有提供default constructor,通常的作法是定義一個指標陣列取而代之,然後利用new 一一將每個指標初始化:

对类对象数组中的元素初始化,必须通过该类的构造函数来进行。通过初始化列表赋值。例:

Point A[2]={Point(1,2),Point(3,4)};

C *ptrArray[10]; // 沒有呼叫任何constructors

ptrArray[0] = new C(22); // 配置並建構一個C 物件

ptrArray[1] = new C(4); // 同上

相关文档
最新文档