c++构造函数,拷贝构造函数,析构函数,赋值运算符重载
2016-10-21 18:52
274 查看
构造函数:
是一个特殊的成员函数,名字与类名相同,创建类类型对象时,由编译器自动调用,在对象的生命周期内只且只调用一次,以保证每个数据成员都有一个合适的初始值。<strong><span style="font-size:24px;color:#009900;">class Cdate { public: Cdate(int year,int month, int day) { _year = year; _month = month; _day = day; } private: int _year; int _month; int _day; }</span></strong>
构造函数特点:
1.函数名和类名相同;
2.没有返回值;
3.不能用const修饰;
拷贝构造函数:
只有单个形参,而且该形参是对本类类型对象的引用(常用const修饰),这样的构造函数称为拷贝构造函数。拷贝构造函数是特殊的构造函数,创建对象时使用已存在的同类对象来进行初始化,由编译器自动调用。class CDate { public: CDate() {} CDate( const int year, const int month, const int day) { _iYear = year; _iMonth = month; _iDay = day; } CDate( const CDate& date) { _iYear = date._iYear; _iMonth = date._iMonth; _iDay = date._iDay; } private: int _iYear; int _iMonth; int _iDay; };
1、它是构造函数的重载。
2、它的参数必须使用同类型对象的引用传递。
3、如果没有显式定义,系统会自动合成一个默认的拷贝构造函数。默认的拷贝构造函数
会依次拷贝类的数据成员完成初始化。
【使用场景】
1、对象实例化对象
2、传值方式作为函数的参数
3、传值方式作为函数返回值(return data)
析构函数:
析构函数:与构造函数功能相反,在对象被销毁时,由编译器自动调用,完成类的一些资源清理和汕尾工作。class CArray { public: CArray(size_t capacity) : _capacity(capacity) { _pData = ( int*)malloc(capacity*sizeof (int)); _size = 0; } ~CArray() { if (NULL != _pData) { free(_pData); _pData = NULL; } _size = 0; _capacity = 0; } private: int* _pData; size_t _size; size_t _capacity; };
a、析构函数在类名(即构造函数名)加上字符~。
b、析构函数无参数无返回值。
c、一个类有且只有一个析构函数。若未显示定义,系统会自动生成缺省的析构函数。
d、对象生命周期结束时,C++编译系统系统自动调用析构函数。
e、注意析构函数体内并不是删除对象,而是做一些清理工作。
赋值运算符重载:
使用重载操作符,可以令程序更自然、更直观,而滥用操作符重载会使得类难以理解,在实践中很少发生明显的操作符重载滥用。但有些程序员会定义operator+来执行减法操作,当一个重载操作符不明确时,给操作符取一个名字更好,对于很少用的操作,使用命名函数通常比用操作符好,如果不是普通操作,没有必要为简洁而用操作符。相关文章推荐
- C++中的构造函数,拷贝构造函数,析构函数和赋值运算符重载
- 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数
- 关注C++细节——含有本类对象指针的类的构造函数、析构函数、拷贝构造函数、赋值运算符的例子
- 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数
- c++ 实现双向链表构造函数,拷贝构造函数,析构函数,输出操作符重载,赋值操作符重载,头插尾插,头删尾删,任意位置插入,任意位置删除,查找等
- C++基础(一)构造函数、析构函数、拷贝构造函数
- c++ 构造函数,拷贝构造函数,析构函数与赋值操作符
- 深度解析-->c++中构造函数,拷贝构造,赋值运算符重载,析构函数的调用情况
- 关于C++中的构造函数、拷贝构造函数、析构函数的总结
- 【程序语言】C++ 构造函数 拷贝构造函数 =操作符重载 析构函数 详细分析
- 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数
- C++之 构造函数 拷贝构造函数 析构函数 赋值操作
- C++中构造函数、参数列表、析构函数、拷贝构造函数、动态分配的数组变量的删除的简单例子
- c++ 构造函数 拷贝构造函数 析构函数 总结
- 深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结
- 深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结
- 构造函数、 拷贝构造函数 、 析构函数 和赋值运算符重载
- C++实现一个类并包含构造函数,拷贝构造函数,赋值函数,析构函数
- C++基础4:构造函数、析构函数、拷贝构造函数、静态成员函数
- C++之构造函数、拷贝构造函数、析构函数(节自《C++语言程序设计》第三版)