-
子类和父类函数重名,但参数不同,继承的时候不能重载,还是会隐藏。查看全部
-
继承方式protect查看全部
-
继承方式查看全部
-
开小差查看全部
-
开小差了查看全部
-
作为菱形继承最顶层的父类,并没有进行参数的传递,参数只使用了顶层父类的默认参数,而无法从子类中获得传入的参数查看全部
-
重定义,就是背定义了多次 通过宏定义解决重定义 #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; }查看全部
-
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> 无论怎样,父类只能接收和访问子类中自己有的数据成员和成员函数查看全部
-
同名函数,其参数的不同,同样还是隐藏,即为当函数名相同时,隐藏与函数的参数的个数无关 当数据成员同名的时候,子类的数据成员直接只用只能使用自身的,不能使用继承下来同名的数据成员。如果想使用,就需要加上父类的类名冒号冒号父类数据成员,打印的时候也必须使用父类类名::父类数据成员的方式,才能将其打印出来查看全部
举报
0/150
提交
取消