为了账号安全,请及时绑定邮箱和手机立即绑定
  • 子类和父类函数重名,但参数不同,继承的时候不能重载,还是会隐藏。
    查看全部
  • 继承方式protect
    查看全部
  • 继承方式
    查看全部
    0 采集 收起 来源:[C++]公有继承

    2016-09-22

  • 开小差
    查看全部
  • 开小差了
    查看全部
    0 采集 收起 来源:[C++]isA

    2016-09-22

  • 作为菱形继承最顶层的父类,并没有进行参数的传递,参数只使用了顶层父类的默认参数,而无法从子类中获得传入的参数
    查看全部
  • 重定义,就是背定义了多次 通过宏定义解决重定义 #ifndef #define 意思是假如没有定义它,就定义它 尾部是#endif 最好在每个头文件都加,因为你也不知道什么时候有可能不继承
    查看全部
  • 因为虚继承,所以产生了虚基类,这样就可以避免产生两个相同的A的数据
    查看全部
  • 在最底层的类,要实例化对象,就必须执行继承量当中的每一个类<br> 在销毁的时候,逆序执行 无论继承有多少级,只要保持间接或者直接的关系,子类都可与自己的直接父类,或者是间接父类,称之为is a 的关系,并且能够通过父类的指针对直接子类或者是间接子类的对象进行操作
    查看全部
  • 多重继承:例如有三个类,C类继承了B类,B类继承了A类,那么这三个类之间就存在多重继承关系 多继承:一个派生类有多个基类
    查看全部
  • #include <iostream> #include <stdlib.h> #include <string> using namespace std; /** * 定义人类: Person * 数据成员: m_strName * 成员函数: attack() */ class Person { public: string m_strName; void attack() { cout << "attack" << endl; } }; /** * 定义士兵类: Soldier * 士兵类公有继承人类 * 数据成员: m_strName * 成员函数: attack() */ class Soldier:public Person { public: string m_strName; void attack() { cout << "fire!!!" << endl; } }; int main(void) { // 实例士兵对象 Soldier soldier; // 向士兵属性赋值"tomato" soldier.m_strName = "tomato"; // 通过士兵对象向人类属性赋值"Jim" soldier.Person::m_strName = "Jim"; // 打印士兵对象的属性值 cout << soldier.m_strName << endl; // 通过士兵对象打印人类属性值 cout << soldier.Person::m_strName << endl; // 调用士兵对象方法 soldier.attack(); // 通过士兵对象调用人类方法 soldier.Person::attack(); return 0; }
    查看全部
    0 采集 收起 来源:巩固练习

    2018-03-22

  • void test1(Person p){p.play}调用test1的时候,因为在test1中所定义的参数是一个对象P,所以传值的时候会先实例化临时对象P,通过临时对象P调用play这个函数,在test1执行完毕之后,p这个临时对象就会被销毁 如果函数的参数是基类的对象,那么基类的对象和派生类的对象,都可以作为实参传递进去,并且可以正常使用。 void test2(Person &p) 没有实例化临时对象,使用基类的引用也可以接收基类的对象以及派生类的对象 void test3(Person *p)的调用结果和void test2(Person &p)一样 因为不产生临时变量,所以void test3(Person *p)、void test2(Person &p)效率更高
    查看全部
  • 对象赋值、指针指向的时候,如果用父类去接受或者是指针指向的方式,无论是用soldier初始化p 这个对象,还是soldier 直接赋值给p 这个对象,soldier子类中的数据成员的数据都能够赋值给它的父类当中的对象对应的那个数据成员 p只能调用自己的数据成员和成员函数,不能调用子类的数据成员和成员函数 通过父类的指针指向子类的对象,销毁的时候执行的是父类的析构函数,子类的内存没有释放,为了防止内存的泄漏,此时需要用virtual关键字修饰修购函数,virtual可以被继承
    查看全部
  • 派生类的对象可以赋值给基类,可以用基类的指针指向派生类的对象,也就是派生类的对象可以去地址给基类<br> (派生类可以给基类赋值,基类指针可以指向派生类)<br> 由上可以引出这种情况:把基类的指针或者是基类的对象或者是基类的引用作为函数的参数来使它可以接收所传入的子类的对象,并且也可以传入基类的对象<br> 无论怎样,父类只能接收和访问子类中自己有的数据成员和成员函数
    查看全部
    1 采集 收起 来源:[C++]isA

    2018-03-22

  • 同名函数,其参数的不同,同样还是隐藏,即为当函数名相同时,隐藏与函数的参数的个数无关 当数据成员同名的时候,子类的数据成员直接只用只能使用自身的,不能使用继承下来同名的数据成员。如果想使用,就需要加上父类的类名冒号冒号父类数据成员,打印的时候也必须使用父类类名::父类数据成员的方式,才能将其打印出来
    查看全部

举报

0/150
提交
取消
课程须知
本课程是C++初级课程 熟练掌握C++语言基础语法,如需要学习C++基础语法的可以看《C++远征之起航篇》、《C++远征之离港篇》、《C++远征之封装篇(上)》、《C++远征之封装篇(下)》
老师告诉你能学到什么?
1、什么是继承 2、基类和派生类的概念 3、继承的三种方式 4、多重继承和多继承 5、虚继承是怎么回事

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!