C++析构函数的作用及其定义方法的学习笔记
2013-10-09 23:47
477 查看
析构函数与构造函数的作用几乎正好相反,它用来完成对象被删除前的一些清理工作,也就是专门做扫尾工作的。一般情况下析构函数的对象的生存期即将结束时候由系统自动调用,它调用完之后对象也就消失了,相应的内存空间也被释放。
析构函数也是类的一种特殊的成员函数,它具有以下一些特性:
(1)析构函数名是类名前加求反的符号~
(2)析构函数不指定返回类型,它隐含的有返回值,由系统内部使用。
(3)析构函数没有参数,因此析构函数不能重载,一个类只能由一个析构函数。
(4)在撤销系统时,系统会自动调用析构函数。
以下是一个小例子:
析构函数的第二个例子:
析构函数也是类的一种特殊的成员函数,它具有以下一些特性:
(1)析构函数名是类名前加求反的符号~
(2)析构函数不指定返回类型,它隐含的有返回值,由系统内部使用。
(3)析构函数没有参数,因此析构函数不能重载,一个类只能由一个析构函数。
(4)在撤销系统时,系统会自动调用析构函数。
以下是一个小例子:
#include <iostream> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ class Point{ private: int a; int b; public: ~Point(); Point(); Point(int m,int n); }; int main(int argc, char** argv) { Point point; Point pint(23,45); return 0; } Point::Point():a(1),b(1){ cout<<"无参构造函数"<<endl; } Point::Point(int m,int n):a(m),b(n){ cout<<"a="<<a<<"b="<<n<<endl; } Point::~Point(){ cout<<"析构函数"<<endl; }
析构函数的第二个例子:
#include <iostream> #include <string> using namespace std; /* run this program using the console pauser or add your own getch, system("pause") or input loop */ class Students{ private: int age; string name; public: Students(); Students(int m,string n); ~Students(); void addStudents(int m1,string n1); }; int main(int argc, char** argv) { Students students; Students Students(26,"张三"); students.addStudents(35,"成龙"); return 0; } Students::Students():age(24),name("徐旭丹"){ cout<<"无参构造函数-------------"<<endl; } Students::Students(int m,string n):age(m),name(n){ cout<<"有参构造函数"<<"m=="<<m<<"::n=="<<n<<endl; } Students::~Students(){ cout<<"析构函数的使用。。。"<<endl; } inline void Students::addStudents(int m,string n){ cout<<"自定义的一个函数"<<"m=="<<m<<"::n=="<<n<<endl; }
相关文章推荐
- C++学习笔记4--静态属性 静态方法 虚方法 抽象方法 多态性 析构函数 运算符重载 多继承 虚继承
- C++学习笔记(五):auto和decltype两个比较神奇的定义变量方法
- c++学习笔记之基础---类内声明函数后在类外定义的一种方法
- COCOS学习笔记--Layer作用及其2种创建方法
- 【C#学习笔记】各种定义方法的例子
- C++ 类的析构函数学习笔记4
- C++ 类的析构函数学习笔记5
- 转 [学习笔记]时钟中断的定义及作用
- C++学习笔记-----不要在构造函数和析构函数中调用虚函数
- 【C++】学习笔记四十五——存储持续性、作用域、链接性
- C++ FAQ学习笔记 11 章 析构函数
- C++中虚析构函数的作用及其原理分析
- C++学习笔记之作用域为类的常量和作用域内的枚举
- C++学习笔记25,析构函数总是会宣布virtual
- Android 面试题笔记-------android解析XML的方法有几种?都是什么?及其作用于区别?
- C++学习笔记---再探 map 的用法之计数重复key的value值的方法,由leetcode 169题想到的
- C++学习笔记25,永远将析构函数声明为virtual
- Java学习笔记——内部类及其调用方法
- 【C++】【学习笔记】【021-022】静态属性和静态方法
- c++学习笔记之构造函数和析构函数