对象的数组,和声明一个普通的结构数组并没有什么区别。
在默认情况下,单纯的声明一个对象数组(未显式的调用构造函数时),那么将调用默认构造函数为对象数组的每个成员进行赋值(具体赋值情况需要根据默认构造函数而定)。
如代码:
#include<iostream> #include<string> class man { private: std::string name; int a; public: man() { name = "no name";a = 0; } man(const char* na, int b) { name = na;a = b; } void show() { std::cout << name << ": " << a << std::endl; } }; int main() { man a[2]; //第一种声明方法,使用默认构造函数 a[0].show(); man b[2] = //第二种声明方法,使用构造函数的重载函数 { man{ "aa",1 }, //可以只声明一个,也可以声明一个里面的一个或几个成员(但前提是默认构造函数提供了默认参数) man{ "bb", 2 } //这里就像单独声明一个对象一样,多个对象之间用逗号隔开 }; b[0].show(); const int p = 2; man c[p] = //也可以同时使用不同的构造函数 { man(), //这里使用默认构造函数 man("xx",5) //这里使用另一个构造函数 }; c[0].show(); system("pause"); return 0; }
总结:
①三种声明方法:分别是:使用默认构造函数、使用构造函数并赋初值、二者混用。具体见代码。
②其他使用方法和声明、初始化结构数组并没有什么不用。