C++构造函数详解_第1页
C++构造函数详解_第2页
C++构造函数详解_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第C++构造函数详解文章转自公众号:Coder梁(ID:Coder_LT)

上一篇文章我们介绍了定义了类,在使用之前,往往还需要对类进行初始化。这篇介绍的就是对类进行初始化的方法。

像是结构体,我们可以使用列表初始化的方法进行初始化:

structThing{

char*pn;

intm;

Thingth={"hello",23};

但类不行,因为结构体当中的成员变量都是public的,而类往往是私有的。这意味着我们不能直接用程序访问数据成员,需要设计成函数。

在C++当中,这种用来构造类的函数,被称为类构造函数。构造函数的原型和函数头有一个比较明显的特征它虽然没有返回值,但没有被声明称void类型,实际上构造函数没有声明类型。

比如我们还是之前的类:

classStock{

private:

std::stringcompany;

longshares;

doubleshare_val;

doubletotal_val;

voidset_tot(){total_val=shares*share_val;}

public:

voidaccquire(conststd::stringco,longn,doublepr);

voidbuy(longnum,doubleprice);

voidsell(longnum,doubleprice);

voidupdate(doubleprice);

voidshow();

#endif

现在我们要加入构造函数,首先是在类中加上声明:

classStock{

...

Stock(conststringco,longn=0,doublepr=0.0);

}

注意看,我们实现定义的时候,函数是没有返回类型的:

Stock::Stock(conststringco,longn,doublepr){

company=co;

if(n0){

std::cerr"Numberofsharescan'tbenegative;"

company"sharessetto0.\n";

shares=0;

}else{

shares=n;

share_val=pr;

set_tot();

}

}

注意,构造函数中的参数名不能和类成员名一致,否则会引起错误:

Stock::Stock(conststringcompany,longshares,doubleshare_val){}

如果一致的话,就会出现这样的代码:

shares=shares;

为了避免这种混乱,一般会在代码风格层面加以区分。比如在谷歌代码规范当中,类中的private成员变量中需要使用后缀_。

最后,我们来看下构造函数的使用。C++当中支持两种方式,

我们先来看第一种,显式地调用:

Stockfood=Stock("word",250,2.5);

另外一种方式是隐式地调用:

Stockgarment("furry",50,2.5);

这种方式更加紧凑,我们每次使用new动态分配内存时,也会使用类构造函数。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论