-
mark查看全部
-
一、子类对象可以赋值给父类对象,但由于存储结构的原因(两种说法): 1. 只能将父类继承给子类的数据成员赋值给父类 2. 父类只能被与子类共有的数据成员赋值 例: 父类对象的数据成员占用 2字节的内存空间 子类对象的数据成员占用 4字节的内存空间,前面两个字节是从父类继承而来,后面两个字节是子类独有的数据成员 原因:当子类赋值给父类的时候,子类只能将前面从父类继承来的两个字节赋值给父类,而不能将父类(2字节)变成子类(4字节)(逻辑错误)。 这里老师用士兵可以是人类的例子,好记。 二、父类指针指向 当使用父类指针向一个士兵类的时候,父类指针只能调用子类从父类继承而来的成员函数以及数据成员,无法调用士兵类独有的成员函数以及数据成员。 已知限定条件,只能指向一个人,所指的人人是可以吃,有名字。 那么士兵也有名字,也可以吃。 但是士失有代号,会开火 而限定条件是只能指向一个人,这个人没有代号,不会开火。 这里老师用指向一个人也可以指向一个士兵的例子,好记。查看全部
-
person play查看全部
-
private继承的访问权限查看全部
-
protected继承的访问权限查看全部
-
共有继承的访问权限查看全部
-
遇到一个小问题,在使用#include<string>时,需要配套使用using namespace std;才可正常使用string,否则会出错,也就是string类型应该是在std命名空间。以前一直仅把他当作#include<iostream>使用cout时的命名空间,现在想来应该是同名的命名空间。public Soldier : public Person<br> {<br> }<br> 注意只有一个':',不是两个. 使用string类型必须包含<string> 声明类的最后要加分号. undefined reference问题:一般是少了目标文件 g++ 编译时要加入所有相关的.o文件 include包含头文件时注意双引号“”和尖括号<>是不同的,编译器会搜索不同的路径 (1)尖括号<>是引用C++自身文件库里的头文件,如<iostream> (2)双引号“”则是引用用户自己编写的头文件,如“Person.h”查看全部
-
调用父类的隐藏函数查看全部
-
继承方式查看全部
-
隐藏成员查看全部
-
Protected继承权限查看全部
-
Public继承权限查看全部
-
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)一样查看全部
-
隐藏的变量或者函数无法重载查看全部
-
公共继承的类:使用宏定义来解决重定义查看全部
举报
0/150
提交
取消