如何在不使用赋值运算符的情况下为动态变量赋初始值?

时间:2018-08-23 01:47:46

标签: c++ initialization new-operator

我正在通过指针在堆中创建一个动态变量。

int* p = new int;

我确定我们都对此很熟悉。但是,我要创建动态变量,并一步一步给它一个初始值 ! 我不想以后再使用赋值运算符。

*p = 5;

我希望所有动态变量都具有相同的初始值,以避免赋值运算符的额外开销。

如果动态变量是类而不是int,您将如何处理?我知道可以一步创建和初始化堆栈的类变量:

class Dog {...};

Dog d1("Spot", 5);

如果Dog对象是动态对象,您可以这样做吗? 我的程序需要动态分配和初始化POD和类类型的变量。

1 个答案:

答案 0 :(得分:4)

是的,direct initialization支持它。只需指定初始化程序即可。

  

通过具有非空初始化程序的new表达式初始化具有动态存储持续时间的对象

int* p = new int(5);
Dog* d1 = new Dog("Spot", 5);