-
隐藏、覆盖和重载的区别: 隐藏和覆盖是发生在继承类的中同名的问题,作用域是不同的;重载函数的范围是相同的; 隐藏:派生类的函数屏蔽了与其同名的基类函数; 父子关系 成员同名 隐藏 子类对象调用同名的成员函数时,它调用的是子类的同名函数; 子类对象通过::调用父类的类型名和同名函数时,它调用的是父类的成员函数; 若想调用父类的同名函数或数据成员时,要加上父类的类名; (1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载混淆) 。 (2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有 virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆) 覆盖:指派生类函数覆盖基类函数; 覆盖特征是: (1)不同的范围(分别位于派生类与基类); (2)函数名字相同; (3)参数相同; (4)基类函数必须有 virtual 关键字。 重载: 成员函数被重载的特征: (1)相同的范围(在同一个类中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无。查看全部
-
http://img1.sycdn.imooc.com//55d324bc0001c80012800720-120-68.jpg查看全部
-
私有继承时基类中各成员属性均变为private,并且基类中private成员被隐藏。派生类的成员也只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。 保护继承时基类中各成员属性均变为protected,并且基类中private成员被隐藏。派生类的成员只能访问基类中的public/protected成员,而不能访问private成员;派生类的对象不能访问基类中的任何的成员。 4天前查看全部
-
http://img1.sycdn.imooc.com//55d2928d0001703a12800720-120-68.jpg查看全部
-
http://img1.sycdn.imooc.com//55d2899a0001afd312800720-120-68.jpg查看全部
-
基类和派生类中同名的函数不能形成重载,只能形成隐藏。查看全部
-
B类从A类派生,那么B类中含有A类的所有数据成员。 不大理解,B类也包含A类私有的数据成员吗?查看全部
-
子类中的函数会隐藏父类中的同名函数,实例化子类对象时,只能访问到子类中的同名函数。访问父类中的同名函数要用一种特殊的方法:中间加入“父类名::”。尽量避免数据成员同名。查看全部
-
派生类构造函数执行的一般次序: 1. 最新调用基类的构造函数,多个基类则按派生类声明时列出的次序,从左到右调用,而不是初始化列表中的次序。 2. 再次调用对象成员(子对象)的构造函数,按类声明中对象成员出现的次序调用,而不是初始化列表中的次序。 3. 最后执行派生类的构造函数。查看全部
-
MigrantWorker::MigrantWoker(string name,string code):Famer(names),Worker(code)查看全部
-
Person *p=new Soldier;//父类指针指向子类堆的对象,释放p后,执行了父类的析构函数,子类没执行,会造成内存泄漏。这时可以用虚析构函数来解决,在父类的析构函数前加virtual。查看全部
-
v u 驹过查看全部
-
用宏定义来解决重定义: #ifndef"名称" #define"名称" #endif查看全部
-
菱形继承中,既有多继承又有多重继承。此时农民工类会有两份继承来的人的数据,用虚继承可以避免这种情况查看全部
-
实现一个子类时,会先依次调用每一个父类的构造函数,顺序与初始化列表中的顺序是一样的。查看全部
举报
0/150
提交
取消