代码之家  ›  专栏  ›  技术社区  ›  Galaxy

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

  •  0
  • Galaxy  · 技术社区  · 6 年前

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

    int* p = new int;
    

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

    *p = 5;
    

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

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

    class Dog {...};
    
    Dog d1("Spot", 5);
    

    如果 Dog 对象是动态的? 我的程序需要动态地分配和初始化POD和类类型的变量。

    1 回复  |  直到 6 年前
        1
  •  4
  •   songyuanyao    6 年前

    是的,你可以, direct initialization

    使用具有非空初始值设定项的新表达式初始化具有动态存储持续时间的对象

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