问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

子类、父类、构造函数…

发布网友 发布时间:2022-05-20 22:03

我来回答

6个回答

热心网友 时间:2023-10-03 06:37

":"是在构造函数中直接去调用一个类的构造函数(可以说是定义变量)
因为变量在类是不会被定义的(除了static变量)
变量都是在定义了的类变量对象 在类中定义的变量才会随之定义
所以在调用构造函数的时候 : 后面就是对在类中声明的变量进行定义 并调用相应的构造函数 正因为如此 所以用这样的方式来初始化变量是最有效率的
你可以在类里定义一个变量mother m;
然后son的构造函数这样写 son:m(a){} 这等于你在普通的函数里写 mother m(a) 是一样的效果

热心网友 时间:2023-10-03 06:37

在父类的构造函数有参数的时候子类的构造函数需要在参数列表中标识出来

热心网友 时间:2023-10-03 06:38

因为前面已经有class son : public mother也就是派生类son继承自类mother,所以这里son (int a) : mother (a)是将son类的a值传递给mother类的a。如果基类的构造函数有参数,它派生类的构造函数需要给基类传递参数时就需要这么写。

热心网友 时间:2023-10-03 06:38

如果一个段中的局部变量与一个全局变量同名,而又要用到全局变量,可使用 域操作符 "::"

热心网友 时间:2023-10-03 06:39

这是继承的重要性
派生类(子类)继承于基类(父类)
类的继承可以直接这样写:

class daughter : public mother{}和
class son : public mother {}

首先你先得弄清楚基类中有两个构造函数一个是不带参数的构造函数mother ()
另外一个是带参数的构造函数mother (int a)
现在来看!
而你的问题:“son (int a) : mother (a) ”
可以很清楚的理解:是派生类 son的带参数的构造函数继承基类的带参数的构造函数mother (int a) ;
所以很清楚了!
“:”是用来继承的符号.

热心网友 时间:2023-10-03 06:40

:之后的部分就是所谓的初始化列表,
如果你的类中有 数据成员,或者你的类继承了其父类的数据成员(包括父类的私有和保护),你都可以考虑使用初始化列表来初始化他们。
如果是本类数据成员,你可以像下面那样初始化,譬如:
class Cls
{
public:
Cls():aa(1){}
private:
int aa;
}

如果是从父类继承的数据成员,(虽然本类不可见,但还是存在的),
就可以像楼主所说的son (int a) : mother (a)
这样初始化父类继承下来的数据,不过楼主给的mother类中在加个数据成员就更好啦。

为什么要使用初始化列表而不直接在类中赋值呢?
一方面是由于类的引用成员和常量成员必须要在初始化列表中初始化;
另一方面是由于效率问题。如下代码楼主可以研究研究,一看就应该明白。
class CData
{
public:
CData()
{
cout<<"CData()"<<endl;
}
CData(int i)
{
cout<<"CData(int i)"<<endl;
};
CData(const CData& obj)
{
cout<<"CData(const CData& obj)"<<endl;
}
CData & operator=(const CData& obj)
{
cout<<"CData & operator=(const CData& obj)"<<endl;
return *this;
}
CData & operator=(int i)
{
cout<<"CData & operator=(int i)"<<endl;
return *this;
}
};
class StrPtr
{
public:
StrPtr():a(3)
{
cout<<"StrPtr():a(3)"<<endl;
}
StrPtr(int c)
{
cout<<"StrPtr(int c)"<<endl;
a=3;
}
private:
CData a;
};

int main(int argc, char* argv[])
{
cout<<"无初始化器:"<<endl;
StrPtr str(1);
cout<<"有初始化器:"<<endl;
StrPtr obj;
}

最后,在面向对象中,继承是IS A的关系
儿子可不是一个妈妈哦
^_^
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 关于C++子类构造函数的问题 下面是有关子类调用父类构造函数的描述正确的是 如果实例化一个子类,而子类则自动调用父类构造方法,那么不就不需要用super关键字了吗? c++多态:一个继承两个父类的子类构造函数调用的过程的顺序是怎么样的,下面为什么是这个调用顺序 C++子类有构造函数为何还继承父类的构造函数 C++子类会无条件继承父类的构造函数么 c++ 继承性,子类调用父类的构造函数问题 C++创建派生类对象时,调用构造函数顺序 c# 中 子类不继承父类的构造函数 但是子类默认调用父类的构造函数,这两句话感觉好矛盾呀,请C神给 子类都会首先调用父类的构造函数吗? 2010-2014韩剧收视率排行榜 C++问题,为什么下面程序编译有错误? 关于子类调用父类构造函数 吐血跪求2000年至2005年TVB历年收视排名前10的剧集及收视率(按顺序排列... C++之中子类能使用父类的有参构造函数吗?如何使用? 爱人的谎言收视率多少 电视剧收视率排行榜排名多少 C++ 子类调用父类构造函数 2012年4月份电视剧收视率排行榜谁有 近几年韩国收视率排行榜 现在为止 台湾偶像剧收视率排行 2011电视剧收视率排行榜 c++子类向父类的显示转换时为什么调用拷贝构造函数 2点35的飞机几点登机? 怎样才能让水泡不要再长呢? 哪位大神有叛逆的鲁鲁修的JQ 漫画。BL的都可以。cc和鲁鲁修的最好,哈哈。~~~~583379818@qq.com 下午五点的飞机 我几点到机场最好?现在说的起飞前45分钟停止办理登机手续是什么意思? 大街上油炸葱油饼怎么样才能起泡? 有没有鲁鲁修和卡莲或cc的同人漫画,bl不要,请发送dyd159357@126.com 求鲁鲁修同人漫画,就是和cc差不多的,不要bl 求鲁鲁修cc同人漫画,是漫画不是小说,坚决抵制BL,邮箱954400256@qq.com 脚上长水泡要怎么才能要治 谁有鲁鲁修 x cc的同人漫画,合集最好,bl免谈,请发送到qaz159357007@126.com 这是什么耽美漫画~有链接最好 鲁鲁修cc同人漫画跟卡莲.不要bl.276782070@qq.com 你赞同“有则改之无则加勉”这句话吗? 有则改之,无则加冕是什么意思? 有则改之下一句是什么=-O 一人掘井 光阴似箭 拳不离手 己所不欲 有则改之 亡羊补牢这些谚语的后面一句是什么? 朱红之泪剧情 真三国无双4如何得马和珍宝 《英雄传说4 朱红泪》中出现的书籍《剑帝扎姆扎》和《疾风小子拉宾》都在哪里和那种情况下可以得到?