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

How do I assign an initial value to a dynamic variable without using assignment operator?

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

int* p = new int;

相信大家都很熟悉。但是,我想创建动态变量并给它一个初始值一步! 我不想以后使用赋值运算符。

*p = 5;

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

如果动态变量是 class 而不是 int,你会怎么做?我知道可以一步创建和初始化堆栈的 class 变量:

class Dog {...};

Dog d1("Spot", 5);

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

可以,direct initialization支持。只需指定初始值设定项。

initialization of an object with dynamic storage duration by a new-expression with a non-empty initializer

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