例子:
#include <iostream>
using namespace std;
class Person {
public://类函数和成员函数都是public的,供外界调用
Person();//无参构造函数,如果没有构造函数会自动创建一个无参构造函数
Person(string name, int age);//有参构造函数
~Person();//析构函数,释放内存
string getName();//name的getter方法
int getAge();//age的getter方法
private:
string name;//长远变量
int age;//成员变量
};
/*实现构造函数*/
Person::Person() {
name = "ttf";
age = 22;
}
/*实现有参构造函数*/
Person::Person(string name, int age) {
this->name = name;
this->age = age;
}
/*实现析构函数*/
Person::~Person() {
cout << "释放了" << this->getName() << endl;
}
/*实现getter方法*/
string Person::getName() {
return this->name;
}
int Person::getAge() {
return this->age;
}
int main() {
Person p;//在栈中声明一个对象,调用无参的构造函数
cout << p.getName() << " " << p.getAge() << endl;
//在堆中声明一个对象
Person *person = new Person("fft", 21);//调用有参构造函数
cout << person->getName() << " " << person->getAge() << endl;
delete person;//使用new创建的要主动释放内存
return 0;
}
结果
ttf 22
fft 21
释放了fft
释放了ttf
使用new关键字,前面的必须是指针形式
析构函数释放内存的特点:
- 不管是堆中还是栈中,先创建的后释放,后创建的先释放
时间: 2024-12-20 20:59:34