构造函数与析构函数
2016-03-21 20:53
218 查看
构造函数:
作用:初始化类中的数据成员
特点:
1、在对象创建时,由系统自动调用;
2、构造函数名与类名相同;
3、不能指定返回类型
4、允许为内联,重载,带默认参数值得函数
5、如果类中未声明,系统自动产生一个默认形式的构造函数;
拷贝构造函数:
用类的一个对象去初始化类的另一个对象。
析构函数:无返回值,无参数,没有重载。
格式:~类名();
作用:1、完成对象被删除前的一些清理工作
2、对象生命周期结束时,系统自动调用它,然后再释放对象所属的空间。
3、如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数。
作用:初始化类中的数据成员
特点:
1、在对象创建时,由系统自动调用;
2、构造函数名与类名相同;
3、不能指定返回类型
4、允许为内联,重载,带默认参数值得函数
5、如果类中未声明,系统自动产生一个默认形式的构造函数;
#include<iostream> using namespace std; class A { private: int a; public: A(); A(int k); void display(); }; void A::display() { cout<<"a = "<<a<<"\n"; } A::A() { a = 3; } A::A(int k) { a = k; } int main() { A a1(4); a1.display(); }
拷贝构造函数:
用类的一个对象去初始化类的另一个对象。
#include<iostream> using namespace std; class Point { private: int x,y; public: Point(int xx = 0,int yy = 0) { x = xx; y = yy; } Point(const Point &p); int GetX(){return x;} int GetY(){return y;} }; Point::Point(const Point &p) { x = p.x; x = p.y; } int main() { Point A(1,2); Point B(A); cout<<B.GetX()<<endl;//用一个对象去初始化另一个对象 } ////////////////////////////////////////////////////////// void func(Point p) { cout<<p.GetY()<<endl; } int main() { Point A(1,2); func(A);//函数的形参为类对象,调用函数时实参赋值给形参 } //////////////////////////////////////////////////// Point &fun2() { static Point A(1,2); return A; } int main() { Point B=fun2(); //当函数的返回值是类对象时,系统自动调用拷贝构造函数 }
析构函数:无返回值,无参数,没有重载。
格式:~类名();
作用:1、完成对象被删除前的一些清理工作
2、对象生命周期结束时,系统自动调用它,然后再释放对象所属的空间。
3、如果程序中未声明析构函数,编译器将自动产生一个默认的析构函数。
相关文章推荐
- linux系统支持中文
- 逃离迷宫(HDU 1728 BFS)
- 作业三(上)阅读程序
- 一些网站的推荐(长期更新)
- n个人循环报数1-3问题
- 构造方法与重载
- Java 进阶 之 并发编程 Synchronized
- 54. Spiral Matrix
- [Poj 3278] Catch That Cow BFS
- PopupWindow和AlertDialog区别
- Android下pm 命令详解
- 第三周对构建之法的理解
- 【分享】图解Windows Server 2012 R2 配置IIS 8全过程
- Struts2工作原理
- 蓝牙、红外线与wifi 区别以及不同频段无线电磁波的穿墙和绕过障碍物能力(转)
- 【一张大大的图片】类和对象知识点总结
- /sys/power创建
- Android launcher3 开发初始篇
- 单元测试
- 基于8051内核的实验—流水灯