在C++中,new
操作符用于動(dòng)態(tài)分配內(nèi)存并創(chuàng)建對(duì)象。當(dāng)使用new
創(chuàng)建對(duì)象時(shí),可以通過構(gòu)造函數(shù)的初始化列表來初始化對(duì)象的成員變量。以下是一些關(guān)于如何在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(); // 調(diào)用默認(rèn)構(gòu)造函數(shù)
MyClass* obj2 = new MyClass(1, 2); // 調(diào)用帶參數(shù)的構(gòu)造函數(shù)
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
和初始化列表可以簡(jiǎn)化對(duì)象的創(chuàng)建和初始化過程。初始化列表提供了一種高效、安全的方式來初始化對(duì)象的成員變量。