C++对象数组

#include<iostream>
using namespace std;
class CTest{
public:
    CTest(int n){cout<<"构造函数(1)"<<endl;}  //构造函数(1)
    CTest(int n, int m){cout<<"构造函数(2)"<<endl;}  //构造函数(2)
    CTest(){cout<<"构造函数(3)"<<endl;}  //构造函数(3)
};
int main(){
    //三个元素分别用构造函数(1)、(2)、(3) 初始化
    cout<<"第一个"<<endl;
    CTest arrayl [3] = { 1, CTest(1,2) };
    cout<<"第二个"<<endl;
    //三个元素分别用构造函数(2)、(2)、(1)初始化
    CTest array2[3] = { CTest(2,3), CTest(1,2), 1};
    //两个元素指向的对象分别用构造函数(1)、(2)初始化
    cout<<"第三个"<<endl;
    CTest* pArray[3] = { new CTest(4), new CTest(1,2) };
    return 0;
}

输出:

第一个
构造函数(1)
构造函数(2)
构造函数(3)
第二个
构造函数(2)
构造函数(2)
构造函数(1)
第三个
构造函数(1)
构造函数(2)

上面程序中比较容易令初学者困惑的是第三个。pArray 数组是一个指针数组,其元素不是 CTest 类的对象,而是 CTest 类的指针。
第三个对 pArray[0] 和 pArray[1] 进行了初始化,把它们初始化为指向动态分配的 CTest 对象的指针,
这两个动态分配出来的 CTest 对象又分别是用构造函数(1)和构造函数(2)初始化的。pArray[2] 没有初始化,其值是随机的,不知道指向哪里。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值