4期c++9月19号

上午知识点

1.派生类成员的标识与访问同名覆盖原则

当派生类与基类中有相同成员时:1若未强行指名,则通过派生类对象使用的是派生类中的同名成员。2如要通过派生类对象访问基类中被覆盖的同名成员,应使用基类名限定。

派生类与基类中有共同成员,基类中的同名成员会被隐藏或者说是基类中的同名成员被重定义了,也可以说派生类中的同名成员把基类中的给遮盖了,调用同名成员见一下例子:

class student{,,,,public:  ........  void o(){cout<<tel<<endl;}    protected:  int tel;};

class master:public student{ ..public:. void(){cout<<①tel<<endl;②student::o();③cout<<student::tel<<endl;protected:  int tel;};

void main(){一、master a(13312345,13012345); 二、 a.o();三、a.Student::o();

①调用的是派生类中的tel,②和③调用的是基类中的tel

一和二是派生类的函数 ,三是基类的函数

2,多重继承形式:class 派生类名:继承方式1  基类名1,继承方式2  基类名2,...{成员声明;}

①cass C: public B2, public B1, public B3{public:C(int i, int j, int k,int l):B1(i,j),B2(k,l){d=i+l}

构造函数的调用顺序取决于继承的顺序,和初始化的顺序无关。如上先调用B2,在调用B1,最后B3.

3.二义性

①在多重继承时,基类与派生类之间,或基类之间出现同名成员时,将出现访问时的二义性(不确定性)——采用虚函数或同名覆盖原则来解决。cout<<B1::b<<B2::b<<endl;

②当派生类从多个基类派生,而这些基类又从同一个基类派生,则在访问此共同基类中的成员时,将产生二义性——采用虚基类来解决。

虚基类的引入用于有共同基类的场合。声明class B1:virtual public B

作用主要用来解决多继承时可能发生的对同一基类继承多次而产生的二义性问题.为最远的派生类提供唯一的基类成员,而不重复产生多次拷贝

注意:在第一级继承时就要将共同基类设计为虚基类。

有虚基类的构造函数先调用虚基类再按继承顺序继续。如下:先B0在B1  B2

class B0{};  classB1::virtual public B0{};  classB2::virtual public B0{}; classD:: public B1,public B2{public:D(int b0,int b1, int b2, int b3):B0(b0),B1(b1),B2(b2){nvd=b3;}}

下午进行图形类的练习,根据老师上课讲的例题进行编写,本题包括了这几天的所有知识点,未完成晚上会继续编写。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 今天上午主要讲了三个知识点 1.派生类成员的标识与访问同名覆盖原则 当派生类与基类中有相同成员时:1若未强行指名,...
    34d71ddb735c阅读 235评论 0 0
  • 1. 结构体和共同体的区别。 定义: 结构体struct:把不同类型的数据组合成一个整体,自定义类型。共同体uni...
    breakfy阅读 2,292评论 0 22
  • C++文件 例:从文件income. in中读入收入直到文件结束,并将收入和税金输出到文件tax. out。 检查...
    SeanC52111阅读 3,153评论 0 3
  • @synthesize和@dynamic分别有什么作用?@property有两个对应的词,一个是 @synthes...
    笔笔请求阅读 691评论 0 1
  • 不得不说时间是一个很奇妙的载体,承载着生命,承载着故事,承载着岁月里的你和我。岁月里,我们一路流浪一路傻呼呼的前行...
    苏家小六阅读 525评论 7 15

友情链接更多精彩内容