C++(十一)对象数组

简介: 本文介绍了C++中对象数组的使用方法及其注意事项。通过示例展示了如何定义和初始化对象数组,并解释了栈对象数组与堆对象数组在初始化时的区别。重点强调了构造器设计时应考虑无参构造器的重要性,以及在需要进一步初始化的情况下采用二段式初始化策略的应用场景。

对象数组

//todo 对象数组
#include <iostream>
using namespace std;


class Stu
{
public:
    Stu(string n):_name(n){}
    //or
    //Stu(string n=""):_name(n){}

    void dis()
    {
        cout<<_name<<endl;
    }
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
中对象生成就是这样的。

相关文章
|
12天前
|
搜索推荐 编译器 C语言
【C++核心】特殊的元素集合-数组与字符串详解
这篇文章详细讲解了C++中数组和字符串的基本概念、操作和应用,包括一维数组、二维数组的定义和使用,以及C风格字符串和C++字符串类的对比。
45 4
|
1月前
|
存储 编译器 C++
C ++初阶:类和对象(中)
C ++初阶:类和对象(中)
|
2月前
|
存储 安全 编译器
【C++】类和对象(下)
【C++】类和对象(下)
【C++】类和对象(下)
|
2月前
|
算法 C++
c++学习笔记04 数组
这篇文章是C++学习笔记4,主题是数组。
38 4
|
2月前
|
编译器 C++
virtual类的使用方法问题之在C++中获取对象的vptr(虚拟表指针)如何解决
virtual类的使用方法问题之在C++中获取对象的vptr(虚拟表指针)如何解决
|
2月前
|
C++
C++ --> 类和对象(三)
C++ --> 类和对象(三)
36 9
|
2月前
|
编译器 C++
【C++】类和对象(中)
【C++】类和对象(中)
|
2月前
|
存储 编译器 程序员
【C++】类和对象(上)
【C++】类和对象(上)
|
2月前
|
编译器 C++ 开发者
C++ --> 类和对象(二)
C++ --> 类和对象(二)
33 7
|
2月前
|
存储 编译器 C++
【C++】类和对象(下)
【C++】类和对象(下)
下一篇
无影云桌面