-
<div>C++公有继承特点<img src="https://img1.sycdn.imooc.com//5b3cf13c000116e505000163.jpg" alt="https://img1.sycdn.imooc.com//5b3cf13c000116e508360272.jpg" /></div><div><br /></div>查看全部
-
公有继承:class A:public B
保护继承:class A:protected B
私有继承:class A:private B
查看全部 -
派生类=子类 基类=父类查看全部
-
继承方式:
其中,Worker为派生类,Person为基类
查看全部 -
重定义:在当前的程序中,一个类被定义了两遍(以上也是)。
解决重定义方法:(有菱形定义)在父类的头文件中
宏定义:#ifndef PERSON_H //最好写文件名称(大写),作用是区分
#define PERSON_H //区分文件......................... //内容
#endif //结束
查看全部 -
避免重复继承数据,用virtual进行虚继承(菱形继承关系)
查看全部 -
菱形定义中,
一个父类(XXX类)被多个子类继承时可能出现重定义问题,解决方法:
在原父类的头文件中,写上
#ifndef XXX_H
#define XXX_H
......
#endif
此举称为宏定义
查看全部 -
多继承的子类要用初始化列表的方式初始化子类的成员列表,用初始化列表比较好的情况:传给构造函数的值要分别传给几个对象处理的时候,用 const 修饰的成员的时候,还有就是当初对象成员的时候。
查看全部 -
多重继承:在公有继承中,无论继承多少重子类和直接父类、间接父类都是is a 的关系,也就是子类(Soldier、Infantry)都是父类(Person)。。。。。。。。。。。特点:一对一继承
查看全部 -
1\公有成员可以直接访问,可以间接通过自身类的公有函数访问,也可以通过子类的公有函数访问
2\保护成员不可以直接访问,可以间接通过自身类的公有函数访问,也可以通过子类的公有函数访问
3\私有成员不可以直接访问,可以间接通过自身类的公有函数访问,不可以通过子类的公有函数访问
查看全部 -
对象赋值、指针指向的时候,如果用父类去接受或者是指针指向的方式,无论是用soldier初始化p 这个对象,还是soldier 直接赋值给p 这个对象,soldier子类中的数据成员的数据都能够赋值给它的父类当中的对象对应的那个数据成员p只能调用自己的数据成员和成员函数,不能调用子类的数据成员和成员函数通过父类的指针指向子类的对象,销毁的时候执行的是父类的析构函数,子类的内存没有释放,为了防止内存的泄漏,此时需要用virtual关键字修饰析构函数,virtual可以被继承
查看全部 -
is a”代表的是类之间的继承关系,“has a”代表的是对象和它的成员的从属关系。c++还有另一种实现has-a关系的途径----私有继承。使用私有继承,基类的公有成员和保护成员都将成为派生类的私有成员。这意味着基类方法将不会成为派生对象公有接口的一部分,但可以在派生类的成员函数中使用它们。
使用公有继承,基类的公有方法将成为派生类的公有方法。简而言之,派生类将继承基类的接口,这是is-a关系的一部分。使用私有继承,基类的公有方法将成为派生类的私有方法。简而言之,派生类不能继承基类的接口。正如从被包含对象中看到的,这种不完全继承是has-a关系的一部分。
因此私有继承提供的特性与包含相同:获得实现,但不获得接口。所以,私有继承也可以用来实现has-a关系。查看全部 -
基类指针指向派生类对象: Person *p = &soldier;
派生类对象初始化基类对象: Person p1 = soldier;父类对象 子类对象
m_strName m_strName || 相同的数据成员赋值
m_iage m_iage || 同上
m_dfjs || 不同的被截断
父类指针 ->-> 子类对象 || 指针也只能访问相同的元素
查看全部 -
如果子类、父类有同名函数,父类的将要隐藏,且无法构成函数重载,子类不能直接调用父类的同名函数,只能通过 对象.类::成员 来访问。
查看全部 -
"" :是在用“”的当前文件的同目录下搜索
<> : 是搜索程序的默认库(系统自带的),不在当前的目录下,头文件数据库
查看全部
举报