c/c++ 构造函数、拷贝构造函数、析构函数和赋值运算符重载
2016-11-02 20:29
411 查看
构造函数
类的实例化
特点:
1.函数名和类名相同;
2.没有返回值;
3.不能用const修饰。
拷贝构造函数
是特殊的构造函数,创建对象时使用存在的同类对象来进行初始化,由编译器自动调用。
特点:
1.是构造函数的重载;
2.参数必须使用同类型对象的引用传递;
3.若无显示定义,系统会自动合成一个;
4.会依次拷贝类的数据成员初始化。
使用场景:
1.对象实例化对象;
2.传值方式作为函数的参数;
3.传值方式作为函数返回值(return Data)。
析构函数
特点:
1.无参数无返回值;
2.对象生命周期结束时,编译器会自动调用;
3.作用不是删除对象,清理而已。
赋值运算符重载
自定义的赋值运算符重载函数的作用于内置赋值运算符的作用类似,但和拷贝构造一样存在深拷贝浅拷贝的问题。
String& operator = (const String& s)
{
_pStr = new char[strlen(s._pStr) + 1];
if (_pStr==NULL)
{
_pStr = new char[1];
*_pStr = '/0';
}
strcpy_s(_pStr, strlen(_pStr), s._pStr);
return *this;
cout << "operator" << endl;
}
using namespace std; class String { public: String(const char* pData="") :_pStr(new char[strlen(pData) + 1]) { if (_pStr==NULL) { _pStr = new char[1]; *_pStr = '/0'; } strcpy_s(_pStr, strlen(_pStr), pData); cout << "String()" << endl; }
类的实例化
特点:
1.函数名和类名相同;
2.没有返回值;
3.不能用const修饰。
拷贝构造函数
是特殊的构造函数,创建对象时使用存在的同类对象来进行初始化,由编译器自动调用。
String(const String& s) :_pStr(new char[strlen(s._pStr) + 1]) { if (_pStr==NULL) { _pStr = new char[1]; *_pStr = '/0'; } else { strcpy_s(_pStr, strlen(_pStr), s._pStr); } cout << "String(const)" << endl; }
特点:
1.是构造函数的重载;
2.参数必须使用同类型对象的引用传递;
3.若无显示定义,系统会自动合成一个;
4.会依次拷贝类的数据成员初始化。
使用场景:
1.对象实例化对象;
2.传值方式作为函数的参数;
3.传值方式作为函数返回值(return Data)。
析构函数
~String() { if (NULL != _pStr) { delete[] _pStr; _pStr = NULL; } }
特点:
1.无参数无返回值;
2.对象生命周期结束时,编译器会自动调用;
3.作用不是删除对象,清理而已。
赋值运算符重载
自定义的赋值运算符重载函数的作用于内置赋值运算符的作用类似,但和拷贝构造一样存在深拷贝浅拷贝的问题。
String& operator = (const String& s)
{
_pStr = new char[strlen(s._pStr) + 1];
if (_pStr==NULL)
{
_pStr = new char[1];
*_pStr = '/0';
}
strcpy_s(_pStr, strlen(_pStr), s._pStr);
return *this;
cout << "operator" << endl;
}
相关文章推荐
- C++构造函数、拷贝构造函数、赋值运算符重载 调用时机 GCC与VC在对象作为返回值的不同处理
- 关注C++细节——含有本类对象指针的类的构造函数、析构函数、拷贝构造函数、赋值运算符的例子
- 20170825_string构造函数、析构函数、拷贝构造函数以及重载赋值运算符
- C++ 学习笔记(13)拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符、析构函数、右值引用、引用限定符
- 【C++学习】构造函数、拷贝构造函数、析构函数小结
- C++语言特性:构造函数,析构函数,虚函数,内联函数,静态成员函数,重载,覆盖,隐藏
- C++构造 函数,析构函数,拷贝构造函数,赋值构造函数,一个内存错误例子!
- [C++基础]046_拷贝构造函数与重载赋值运算符(精深版解释)
- C++中构造函数、参数列表、析构函数、拷贝构造函数、动态分配的数组变量的删除的简单例子
- 从零开始学C++之构造函数与析构函数(二):初始化列表(const和引用成员)、拷贝构造函数
- C++之 构造函数 拷贝构造函数 析构函数 赋值操作
- C++文件头,命名空间,new和delete,内联函数,引用,函数重载,构造函数和析构函数,深拷贝和浅拷贝,explict,this指针
- 运算符的重载,赋值重载,下标重载、对带默认参数的构造函数、析构函数、拷贝构造函数、重载赋值的赋值
- 深入C++中构造函数、拷贝构造函数、赋值操作符、析构函数的调用过程总结
- C++的静态成员函数,成员变量,构造函数,析构函数,拷贝构造函数
- C++ 构造函数 析构函数 拷贝构造函数 运算符重载解析。
- C++学习体会--构造函数,析构函数,拷贝构造函数
- C++中构造函数,拷贝构造函数,析构函数
- C++基础(一)构造函数、析构函数、拷贝构造函数
- C++构造函数、拷贝构造函数、赋值运算符漫谈(二)——函数返回值