我正在通过指针在堆中创建一个动态变量。
int* p = new int;
我确定我们都对此很熟悉。但是,我要创建动态变量,并一步一步给它一个初始值 ! 我不想以后再使用赋值运算符。
*p = 5;
我希望所有动态变量都具有相同的初始值,以避免赋值运算符的额外开销。
如果动态变量是类而不是int,您将如何处理?我知道可以一步创建和初始化堆栈的类变量:
class Dog {...};
Dog d1("Spot", 5);
如果Dog
对象是动态对象,您可以这样做吗?
我的程序需要动态分配和初始化POD和类类型的变量。
答案 0 :(得分:4)
是的,direct initialization支持它。只需指定初始化程序即可。
通过具有非空初始化程序的new表达式初始化具有动态存储持续时间的对象
int* p = new int(5);
Dog* d1 = new Dog("Spot", 5);