对象数组
对象数组
//todo 对象数组
#include
using namespace std;
class Stu
{
public:
Stu(string n):_name(n){}
//or
//Stu(string n=""):_name(n){}
void dis()
{
cout<<_name< } private: string _name; }; int main() { // Stu s; //没有无参构造器 // Stu s[5]= {Stu("zhangsan"),Stu("lisi")}; //不能指定个数,或部分初始化,则会报错。没有默认参数,就会报错 Stu s[]= {Stu("zhangsan"),Stu("lisi")}; // Stu * ps = new Stu[4]{Stu("zhangsan")};//没有默认参数,就会报错 // C11 中支持此种初始化方法,但必须对指定的类个数初始化,否则会报错。 Stu * ps = new Stu[1]{Stu("zhangsan")}; return 0; } 栈对象数组 如果生成的数组,未初始化,则必调用无参构造器。或手动调用带参构造器。 堆对象数组 如果生成的数组,未初始化,则必调用无参构造器。或手动调用带参构造器。 构造器无论是重载还是默认参数,一定要把系统默认的无参构造器包含进来。不然生成数组的时候,可能会有些麻烦。 二段式初始始化: 在对象数组中,要求对象必须包含默认无参构造器的情况,但有时,默认无参构造器并不能完全满足我们的需求,可能要再次初始化。 二段初始化,常将默认无参构造器置为空。然后再次调用初始化函数,比如 cocos中对象生成就是这样的。