在C++中,new
操作符用于动态分配内存并创建对象。当使用new
创建对象时,可以通过构造函数的初始化列表来初始化对象的成员变量。以下是一些关于如何在C++中使用new
和初始化列表的技巧:
- 使用初始化列表初始化成员变量:
class MyClass { public: MyClass(int x, int y) : a(x), b(y) {} private: int a; int b; }; MyClass* obj = new MyClass(1, 2);
- 使用初始化列表初始化常量和引用成员:
class MyClass { public: MyClass(int x, int y) : a(x), b(y) {} private: const int a; int& b; }; int value = https://www.yisu.com/ask/2;>
- 使用初始化列表初始化基类和成员对象:
class Base { public: Base(int x) : a(x) {} protected: int a; }; class Derived : public Base { public: Derived(int x, int y) : Base(x), b(y) {} private: int b; }; Derived* obj = new Derived(1, 2);
- 使用初始化列表调用默认构造函数:
class MyClass { public: MyClass() : a(0), b(0) {} MyClass(int x, int y) : a(x), b(y) {} private: int a; int b; }; MyClass* obj1 = new MyClass(); // 调用默认构造函数 MyClass* obj2 = new MyClass(1, 2); // 调用带参数的构造函数
- 使用初始化列表初始化类型为类的成员变量:
class InnerClass { public: InnerClass(int x) : a(x) {} private: int a; }; class OuterClass { public: OuterClass(int x, int y) : inner(x), b(y) {} private: InnerClass inner; int b; }; OuterClass* obj = new OuterClass(1, 2);
- 使用初始化列表初始化类型为容器的成员变量:
#includeclass MyClass { public: MyClass(int x, int y) : vec({x, y}) {} private: std::vector vec; }; MyClass* obj = new MyClass(1, 2); 总之,在C++中使用
new
和初始化列表可以简化对象的创建和初始化过程。初始化列表提供了一种高效、安全的方式来初始化对象的成员变量。