C++,类的析构函数,语法练习

来源:互联网 发布:合肥网络教育学校 编辑:程序博客网 时间:2024/05/20 05:30
#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个写法?  很反感.

 

原创粉丝点击