- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
构造函数详解以及使用.pdf
C++类构造函数 2
C++特性探寻-构造函数和析构函数4
C++ 默认构造函数 6
C++类对象的拷贝构造函数分析7
关于拷贝构造函数和赋值运算符10
C++析构函数 15
C++特性探寻-构造函数和析构函数15
C++中禁止异常信息传递到析构函数外17
C++箴言:防止异常离开析构函数19
VC++深入详解:析构函数24
调用 C++复制构造函数和拷贝构造函数25
实例解析 C++/CLI 之静态构造函数28
C++中利用构造函数与无名对象简化运算符重载函数37
获得类析构函数地址并执行析构函数42
C++一种有意思的构造析构函数调用现象43
禁用屏幕拷贝调用派生的析构函数44
1
构造函数(constructor )是类的一个特殊的成员函数,它与类名同名。当定
义该类的对象时,构造函数将被系统自动调用用以实现对该对象的初始化。构造
函数不能有返回值,因而不能指定包括 void 在内的任何返回值类型。构造函数
的定义与其他成员函数的定义一样可以放在类内或类外。
C++类构造函数
大部分对象在使用之前没有正确的初始化是 C++出错的主要领域
引入类的构造函数是正确的初始化类的对象
一般什么时候触发并调用类的构造函数呢?
答案是:当我们用类来定义一个类变量的时候,
如:
class demo{}; 声明并定义好完整的类
//当我们用类去建立一个对象时,它首先调用类的构造函数
demo d; //调用类的无参数的构造函数
demo d1(参数 1,..) //按参数个数不同,调用类中不同的构造函数
2.定义
构造函数名和类名完全一样,可以根据不同的参数来实现重载不同的构造函
数
构造函数是没有任何返回值的,它默认的是 public,inline 函数
2.1 定义格式
构造函数可以重载,可以是无参数,有参数,有默认参数)
声明三个构造函数
代码如下
class item{
public:
item(std::string book=\\ ); //带默认形参的构造函数
item(std::string ); //带形参的构造函数
item(); //无形参的构造函数
};
2.2 构造函数的两种初始化成员变量的方法
如下面的类
class demo(){
public:
//构造函数在下面添加
private:
int x;
int y;
2
std::string name;
};
构造函数初始化成员有两种方法
A.使用构造函数的初始化列表进行初始化
格式:funname(参数列表):(初始化列表){}
初始化列表: 成员名 1(形参名 1),成员名 2(形参名 2),成员名 n(形参名 n)
代码:
demo(int a=0,int b=0,std::string s=\\):x(a),y(b),name(s){}
B.使用构造函数的函数体进行初始化
格式:funname(参数列表){函数体内赋值}
它和传统的 C 函数差不多
代码:
demo(int a=0,int b=0,std::string s=\\){
x=a;
y=b;
name=s;
}
3.基类与派生类
3.1 在基类用构造函数初始化类的成员
\默认形参的方式+初始化列表\来初始化基类,而参数顺序不是主要的
代码如下:
class item_base(
public:
//两个构造函数
item_base():(isbn(\\),price(0.0){}
item_base(std::string book=\\,double s_price=0.0) //带
文档评论(0)