c++采用new建立对象数组

本文探讨了C++中使用new操作符动态分配内存时构造函数的调用方式,特别是对于对象数组的初始化过程。文章通过示例说明了默认构造函数与带参数构造函数在new表达式中的应用,并讨论了对象指针成员变量的初始化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

推荐用vector。

参考此文:https://stackoverflow.com/questions/255612/dynamically-allocating-an-array-of-objects

object *p = new object[3];

p[0] = 

p[1] = 

上述情况是否需要定义构造函数?答案是不需要(有默认构造函数就足够了)。如果对象有用户自定义的构造函数,new可以同时对对象初始化。但是,不能用在对象数组上。
An optional initializer field is included in the grammar for the new operator. This allows new objects to be initialized with user-defined constructors.No explicit per-element initialization can be done when allocating arrays using the new operator; only the default constructor, if present, is called.
https://docs.microsoft.com/en-us/cpp/cpp/new-operator-cpp?view=vs-2017

// expre_Initializing_Objects_Allocated_with_new.cpp
class Acct
{
public:
    // Define default constructor and a constructor that accepts
    //  an initial balance.
    Acct() { balance = 0.0; }
    Acct( double init_balance ) { balance = init_balance; }
private:
    double balance;
};

int main()
{
    Acct *CheckingAcct = new Acct;
    Acct *SavingsAcct = new Acct ( 34.98 );
    double *HowMuch = new double ( 43.0 );
    // ...
}

new object不对对象进行初始化。

new object(parameters)显示调用构造函数初始化对象。

如果没有定义默认构造函数,也可以用new动态定义对象数组,参考https://www.cnblogs.com/SimonKly/p/7819147.html

如果类

class A

{

        B * pointer_toB;

pointer_toB,默认构造函数将其初始化成啥?

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值