关于类的其他介绍

c++列表初始化

可以将列表初始化用在类的初始化当中

Stock s1 = {"name",100,45.0};
Stock s2{"name1"}
Stock s3{}

前俩个声明,与我们定义的构造函数匹配,最后一个声明会调用默认构造函数

const 成员函数

const Stock land = Stock(“Kludgehorn Properties”);
land.show();
我们之前在const详解这篇笔记说过,const对象只能调用const成员函数。书上也解释了这一原因:因为show代码也不能保证调用对象不被修改,之前我们在函数 Stock(const std::string& co, long n, double pr);通过const std::string& co来确定实参和形参的对象是一个对象,保证不被修改,但是这里的show函数没有参数,且调用方式是由创建对象所默认的方法。可以通过在成员函数后面加入const限定符,声明成员函数不会修改成员。这种就叫const成员函数。就像应尽可能将const引用和指针用作函数形参一样,只要类方法不修改成员,我们都应将其声明为const。

构造函数和析构函数小结

构造函数是一种特殊的类成员函数,在创建对象时调用。构造函数的名称和类名相同,但是通过函数重载,可以创建多个同名的构造函数,条件是参数列表不同(函数重载我会在后面笔记再强调的),通常,构造函数用于初始化对象的成员,初始化应与构造函数的参数列表相匹配。
如果bozo的构造函数原型如下:

bozo(const char * fname,const char*lname);

bozo a = bozo(“bozetta”,”biggens”);
bozo bb(“fufu”,”O’dweeb”);
bozo*pc = new bozo(“poopo”,”le peu”);
假如构造函数只有一个参数,则对象将初始化为一个与参数的类型相同的值时,该构造函数将被调用。
调用格式:

bozo dirbble = bozo(44);
bozo roon(66);
bozo tubby = 32;

默认构造函数没有参数,因此如果没有显式地初始化对象,那么将默认调用构造函数,如果程序没有任何构造函数,那么程序会定义一个默认构造函数,默认构造函数可以没有任何参数,如果有参数的话,必须给所有参数提供默认值。在参数列表可以初始化也可以在定义初始化。

bozo();
bozo(const char *s = "Chez Zero");

对于未被初始化的对象,程序将使用默认构造函数来创建:

bozo bubi;
bozo *pb = new bozo;

就像对象被创建时调用构造函数一样,当对象被删除时候,程序将调用析构函数,每个类只有一个析构函数。析构函数没有返回类型,也没有参数,其名称为类名称前加上~。
例如:~bozo,如果构造函数使用了new,则必须使用delete的析构函数

网站标题:CV鼻祖洋芋

原创文章,作者:locus,如若转载,请注明出处:https://blog.cvpotato.cn/forward-code/c/200/

本博客所发布的内容,部分为原创文章,转载注明来源,网络转载文章如有侵权请联系站长!

(0)
上一篇 6天前
下一篇 6天前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注