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

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

初始化類對(duì)象

2019-09-10 09:07:07
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
初始化類對(duì)象
趙湘寧
問(wèn)題:
      C++中如何初始化類中的表數(shù)據(jù)?在C語(yǔ)言中,我能像下面這樣初始化結(jié)構(gòu)數(shù)組:
//struct MYSTRUCT {    int x,y,z;};MYSTRUCT table[] = {    { 1,2,3 },    { 4,5,6 },    ... // etc};//
但是如果MYSTRUCT是個(gè)C++類,而不是結(jié)構(gòu),我編譯就會(huì)出錯(cuò)。我覺(jué)得這是C++的一個(gè)不足。
解答:
   這個(gè)問(wèn)題完全取決于你如何看待C++。C++的一個(gè)優(yōu)點(diǎn)之一便是它強(qiáng)制你做正確的事情。例如,C++不喜歡創(chuàng)建對(duì)象時(shí)不調(diào)用構(gòu)造函數(shù)。這只就是為什么你不能用原始數(shù)據(jù)初始化類對(duì)象的原因,不管是部分?jǐn)?shù)組還是其它數(shù)據(jù)。構(gòu)造函數(shù)的目的是保證每一個(gè)對(duì)象都被正確初始化,不管你是從程序棧,可用內(nèi)存堆分配空間,還是作為靜態(tài)數(shù)組元素。讓原始數(shù)據(jù)旁路掉構(gòu)造函數(shù)被忌諱的事情。也導(dǎo)致你不能用初始的數(shù)據(jù)來(lái)創(chuàng)建對(duì)象靜態(tài)數(shù)組你必須調(diào)用構(gòu)造函數(shù)!
//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!};//
下面的代碼是個(gè)可以編譯的完整例子。
//// StaticClassArray 說(shuō)明如何初始化在C++對(duì)象的靜態(tài)C數(shù)組 // 編譯方法如下:////    cl fooble.cpp//#include <stdio.h>//////////////////// 一個(gè)典型的類有三個(gè)數(shù)據(jù)成員...//class CFooble {protected:   int x,y,z;public:   // 兩個(gè)構(gòu)造函數(shù)...   CFooble(int i) { x=y=z=i; }   CFooble(int xx, int yy, int zz) : x(xx),y(yy),z(zz) { }   // 一個(gè)輸出函數(shù)   void print() {      printf("CFooble at %p: (%d,%d,%d)", this, x, y, z);   }   // 這個(gè)函數(shù)檢查是否為空...   int IsEmpty() {      return x==0 && y==0 && z==0;   }};#ifdef NEVER// 如下這樣將不能運(yùn)行不能“生硬”地進(jìn)行C++類對(duì)象的初始化!CFooble table[] = {   { 1,2,3 },   { 4,5,6 },   { 0,0,0 }};#endif// 以下是如何初始化一個(gè)類數(shù)組:CFooble table[] = {   CFooble(1,2,3),   CFooble(4,5,6),   CFooble(0), // 甚至可以是用不同的構(gòu)造器!};void main(){   for (CFooble* pc=table; !pc->IsEmpty(); pc++) {      pc->print();   }}//
   在C++中,你能用用任何構(gòu)造函數(shù)初始化數(shù)組元素,并且C++甚至用缺省的構(gòu)造函數(shù)來(lái)初始化額外的元素,而不用外部的初始華例程。對(duì)我來(lái)說(shuō),這是一種進(jìn)步,而不是不足。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 西平县| 尉犁县| 绍兴市| 宁蒗| 长顺县| 阳山县| 安宁市| 岢岚县| 沈丘县| 万州区| 白朗县| 沁水县| 湟源县| 咸阳市| 嘉禾县| 上饶县| 田东县| 宁远县| 江城| 丰顺县| 淮安市| 新晃| 张家川| 青田县| 巨野县| 门头沟区| 甘洛县| 宣化县| 咸宁市| 全州县| 乌什县| 平遥县| 宜黄县| 安乡县| 宝丰县| 昌宁县| 河间市| 津南区| 康保县| 清水县| 察哈|