C类中的4个特殊函数缺省构造函数拷贝构造函数拷贝赋值操作.docx
- 文档编号:30146167
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:13
- 大小:17.15KB
C类中的4个特殊函数缺省构造函数拷贝构造函数拷贝赋值操作.docx
《C类中的4个特殊函数缺省构造函数拷贝构造函数拷贝赋值操作.docx》由会员分享,可在线阅读,更多相关《C类中的4个特殊函数缺省构造函数拷贝构造函数拷贝赋值操作.docx(13页珍藏版)》请在冰豆网上搜索。
C类中的4个特殊函数缺省构造函数拷贝构造函数拷贝赋值操作
a.C++标准中提到“Thedefaultconstructor,copyconstructorandcopyassignmentoperator,anddestructorarespecialmemberfunctions.[Note:
Theimplementationwillimplicitlydeclarethesememberfunctionsforsomeclasstypeswhentheprogramdoesnotexplicitlydeclarethem.Theimplementationwillimplicitlydefinethemiftheyareused.]”。
即缺省构造函数、拷贝构造函数、拷贝赋值操作符和析构函数是特殊成员函数。
b.“Constructorsdonothavenames.Aspecialdeclaratorsyntaxusinganoptionalsequenceoffunction-specifiers(inline,virtualandexplicit)followedbytheconstructor’sclassnamefollowedbyaparameterlistisusedtodeclareordefinetheconstructor.”构造函数没有名称。
c.构造函数不能有返回类型,也不能由virtual,const,static和volatile来修饰。
但可以由inline来修饰,事实上隐式构造函数就是用inline来修饰的。
inline表示编译时展开,通常速度块;virtual表示运行时绑定,通常意味着灵活。
d.类中存在虚函数或者有虚基类的情况下需要显式声明构造函数。
拷贝构造函数也是如此。
f.构造函数是一种特殊函数,而拷贝构造函数是一种特殊的构造函数。
类X的构造函数的第一个参数必须为X&,或者constX&;除了第一个参数外,构造函数要么不存在其他参数,如果存在其他参数,其他参数必须有默认值。
一个类可以有多个拷贝构造函数。
它的形式如下:
X:
:
X(X&x)
X:
:
X(constX&x)
X:
:
X(X&x,inta=0,intb=1…)
g.什么时候会调用拷贝构造函数?
以下三种情况出现时,会调用一个类的拷贝构造函数:
1)用一个已经实例化了的该类对象,去实例化该类的另外一个对象;
2)用该类的对象传值的方式作为一个函数的参数;
3)一个函数返回值为该类的一个对象。
运行下面代码以验证之:
#include
usingnamespacestd;
classCA
{
public:
inta;
intb;
public:
inlineCA()
{
a=1;
b=1;
}
inlineCA(intA,intB)
{
a=A;
b=B;
}
inlineCA(CA&x)
{
a=x.a;
b=x.b;
cout<<"copyconstructoriscalled."< } voidprintInfo() {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 类中的4个特殊函数 缺省构造函数拷贝构造函数拷贝赋值操作 中的 特殊 函数 缺省 构造 拷贝 赋值 操作
![提示](https://static.bdocx.com/images/bang_tan.gif)