初始化类对象,初始化类对象
【 tulaoshi.com - C语言心得技巧 】
//struct MYSTRUCT {    int x,y,z;};MYSTRUCT table[] = {    { 1,2,3 },    { 4,5,6 },    ... // etc};//                       但是如果MYSTRUCT是个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//////////////////// 一个典型的类——有三个数据成员...//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++甚至用缺省的构造函数来初始化额外的元素,而不用外部的初始华例程。对我来说,这是一种进步,而不是不足。
                        来源:http://www.tulaoshi.com/n/20160129/1485589.html