一。构造函数
二。构造函数的调用
三。成员变量的初始化
四。析构函数
#include <iostream>
using namespace std;
struct Car {
int m_price;
Car() {
m_price = 0;
cout << "Car::Car()" << endl;
}
~Car() {
cout << "Car::~Car()" << endl;
}
};
struct Person {
private:
int m_age;
Car *m_car;
public:
// 用来做初始化的工作
Person() {
m_age = 0;
m_car = new Car();//内部申请空间,内部回收
cout << "Person::Person()" << endl;
}
// 用来做内存清理的工作
~Person() {
delete m_car;//内部回收
cout << "Person::~Person()" << endl;
}
};
int main() {
// 内存泄露:该释放的内存并没有得到释放
/*{
Person person;
//delete person.m_car; //不应该在这里释放,放进析构
}*/
int age = 20;
int *p = &age;
getchar();
return 0;
}
case 1:内存空间对于上述代码
case 2:指针变量p在栈空间, 指向堆空间的person对象,person对象里又有一个m_car指针指向堆空间的car对象,car对象里有成员m_price
case 3: 都在栈空间
case 4: 指针变量p在栈空间,对象在堆空间