在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 = 2;MyClass* obj = new MyClass(1, value);使用初始化列表初始化基类和成员对象: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);使用初始化列表初始化类型为容器的成员变量:#include<vector>class MyClass {public: MyClass(int x, int y) : vec({x, y}) {}private: std::vector<int> vec;};MyClass* obj = new MyClass(1, 2);总之,在C++中使用new和初始化列表可以简化对象的创建和初始化过程。初始化列表提供了一种高效、安全的方式来初始化对象的成员变量。


