国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C++基礎:初始化類對象

2019-11-17 05:04:31
字體:
來源:轉載
供稿:網友
問題:
       C++中如何初始化類中的表數據?在C語言中,我能像下面這樣初始化結構數組: 



//
strUCt MYSTRUCT {
    int x,y,z;
};MYSTRUCT table[] = {
    { 1,2,3 },
    { 4,5,6 },
    ... // etc
};
//

 
但是假如MYSTRUCT是個C++類,而不是結構,我編譯就會出錯。我覺得這是C++的一個不足。 解答:

    這個問題完全取決于你如何看待C++。C++的一個優點之一便是它強制你做正確的事情。例如,C++不喜歡創建對象時不調用構造函數。這只就是為什么你不能用原始數據初始化類對象的原因,不管是部分數組還是其它數據。   構造函數的目的是保證每一個對象都被正確初始化,不管你是從程序棧,可用內存堆分配空間,還是作為靜態數組元素。讓原始數據旁路掉構造函數被忌諱的事情。也導致你不能用初始的數據來創建對象靜態數組——你必須調用構造函數!
//
class CFooble {
    int x,y,z;
public:
    CFooble(int xx, int yy, int zz)
        : x(xx),y(yy),z(zz) { ... }
    CFooble(int i) { x=y=z=i; }
};
CFooble table[] = {
    CFooble(1,2,3),
    CFooble(4,5,6),
    CFooble(0),    // can use any constructor!
};
//

 
下面的代碼是個可以編譯的完整例子。
//
// StaticClassArray — 說明如何初始化在C++對象的靜態C數組
// 編譯方法如下:
//
//    cl fooble.cpp
//
#include <stdio.h>




更多文章 更多內容請看C/C++技術專題專題,或

//////////////////
// 一個典型的類——有三個數據成員...
//
class CFooble {
PRotected:
   int x,y,z;public:
   // 兩個構造函數...
   CFooble(int i) { x=y=z=i; }
   CFooble(int xx, int yy, int zz) : x(xx),y(yy),z(zz) { }   // 一個輸出函數
   void print() {
      printf("CFooble at %p: (%d,%d,%d)/n", this, x, y, z);
   }   // 這個函數檢查是否為空...
   int IsEmpty() {
      return x==0 && y==0 && z==0;
   }
};#ifdef NEVER
// 如下這樣將不能運行—不能“生硬”地進行C++類對象的初始化!
CFooble table[] = {
   { 1,2,3 },
   { 4,5,6 },
   { 0,0,0 }
};
#endif// 以下是如何初始化一個類數組:
CFooble table[] = {
   CFooble(1,2,3),
   CFooble(4,5,6),
   CFooble(0), // 甚至可以是用不同的構造器!
};void main()
{
   for (CFooble* pc=table; !pc->IsEmpty(); pc++) {
      pc->print();
   }
}
//
 
    在C++中,你能用用任何構造函數初始化數組元素,并且C++甚至用缺省的構造函數來初始化額外的元素,而不用外部的初始華例程。對我來說,這是一種進步,而不是不足。





更多文章 更多內容請看C/C++技術專題專題,


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 杭锦后旗| 青岛市| 塔城市| 太原市| 博客| 阿荣旗| 连平县| 柳江县| 徐州市| 西乌珠穆沁旗| 区。| 开鲁县| 正镶白旗| 房山区| 临沧市| 册亨县| 日土县| 宜都市| 中西区| 永康市| 康马县| 岫岩| 丰县| 牙克石市| 分宜县| 金乡县| 宁晋县| 兴和县| 吴忠市| 日土县| 东乌珠穆沁旗| 合肥市| 贵阳市| 文成县| 富民县| 太保市| 三明市| 修文县| 长葛市| 麻江县| 彝良县|