#include <iostream>
#include <string>
using namespace std;
class Student
{
public:
// 存
void setname(string s){ name = s;}
void setage(int y){age = y; }
void setaddress(string add){address = add;}
// 取
string getname(){return name;}
int getage(){return age;}
string getaddress(){return address;}
Student & show()
{
cout<<"调用成员函数show-------"<<endl;
cout<<"姓名: "<<name<<" --- 年龄: "<<age<<" ---- 住址: "<<address<<endl;
return *this;
}
//-- 引入构造函数:初始化成员,与类同名,没有返回值
Student(string name,int age,string address)
{
this->name = name; this->age = age; this->address = address;
cout<<this->name<<":调用构造函数---"<<endl;
cout<<"姓名: "<<this->name<<" --- 年龄: "<<this->age<<" ---- 住址: "<<this->address<<endl;
}
//--- 引入 析构函数
~Student(){ cout<<this->name<<":调用析构函数---"<<endl;}
protected:
private:
string name;
int age;
string address;
};
// ---
1) 定义一个 栈上的对象: 构造函数与析构函数都能自动调用一次:

2 ) 建立一个堆上的对象,则 构造函数自动调用,而 析构函数则没有自动调用:

3) 堆上的对象: 它不会主动调用析构函数的, 必须通过"垃圾回收站"第三方 delete 来调用析构函数,从而释放空间:

delete 的2种写法:
delete (p); --- 把delete看作是一个函数, 这个与一般函数调用一样,好理解,
delete p; ---- 把 delete 看作是一个指令.
C++的缔造者为何要搞2个写法? 很反感.
5707

被折叠的 条评论
为什么被折叠?



