C中成员变量初始化有两种方式的区别.docx

C中成员变量初始化有两种方式的区别.docx

ID:62037240

大小:18.20 KB

页数:3页

时间:2021-04-15

C中成员变量初始化有两种方式的区别.docx_第1页
C中成员变量初始化有两种方式的区别.docx_第2页
C中成员变量初始化有两种方式的区别.docx_第3页
资源描述:

《C中成员变量初始化有两种方式的区别.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、C++中成员变量初始化有两种方式的区别构造函数初始化列表和构造函数体内赋值两种方式有何不同?成员变量初始化的顺序是按照在类中定义的顺序。1内部数据类型(char,int……指针等)classAnimal{public:Animal(intweight,intheight)://A初始化列表m_weight(weight),m_height(height){}Animal(intweight,intheight)//B函数体内初始化{m_weight=weight;m_height=height;}private:intm_weigh

2、t;intm_height;};对于这些内部类型来说,基本上是没有区别的,效率上也不存在多大差异。当然A和B方式不能共存的。2无默认构造函数的继承关系中classAnimal{public:Animal(intweight,intheight)://没有提供无参的构造函数m_weight(weight),m_height(height){}private:intm_weight;intm_height;};classDog:publicAnimal{public:Dog(intweight,intheight,inttype)//e

3、rror构造函数父类Animal无合适构造函数{}private:intm_type;};这种必须在派生类中构造函数中初始化提供父类的初始化,因为对象构造的顺序是:父类——子类——……所以必须:classDog:publicAnimal{public:Dog(intweight,intheight,inttype):Animal(weight,height)//必须使用初始化列表增加对父类的初始化{;}private:intm_type;};3类中const常量,必须在初始化列表中初始,不能使用赋值的方式初始化classDog:pu

4、blicAnimal{public:Dog(intweight,intheight,inttype):Animal(weight,height),LEGS(4)//必须在初始化列表中初始化{//LEGS=4;//error}private:intm_type;constintLEGS;};4包含有自定义数据类型(类)对象的成员初始化classFood{public:Food(inttype=10){m_type=10;}Food(Food&other)//拷贝构造函数{m_type=other.m_type;}Food&operat

5、or=(Food&other)//重载赋值=函数{m_type=other.m_type;return*this;}private:intm_type;};(1)构造函数赋值方式初始化成员对象m_foodclassDog:publicAnimal{public:Dog(Food&food)//:m_food(food){m_food=food;//初始化成员对象}private:Foodm_food;};//使用Foodfd;Dogdog(fd);//Dogdog(fd);结果:先执行了对象类型构造函数Food(inttype=10

6、)——>然后在执行对象类型构造函数Food&operator=(Food&other)想象是为什么?(2)构造函数初始化列表方式classDog:publicAnimal{public:Dog(Food&food):m_food(food)//初始化成员对象{//m_food=food;}private:Foodm_food;};//使用Foodfd;Dogdog(fd);//Dogdog(fd);结果:执行Food(Food&other)拷贝构造函数完成初始化不同的初始化方式得到不同的结果:明显构造函数初始化列表的方式得到更高的效

7、率。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。