大佬教程收集整理的这篇文章主要介绍了c++之继承,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
例子:
#include<iostream> using namespace std; class BasePage { public: void header() { cout << "公共头部" << endl; } footer() { cout << 公共尾部 endl; } }; class Java: BasePage{ content() { cout << java相关视频 endl; } }; class Cpp :c++相关视频 test() { Java java; java.header(); java.content(); java.footer(); Cpp cpp; cpp.header(); cpp.content(); cpp.footer(); } int main() { test(); system(pause"); return 0; }
将公有的抽取出来在作为父类,子类继承父类之后就拥有了父类的公有方法。
继承方式有:
继承对象模型:
#include<iostream> Base{ a; protected b; private c; }; class Son : Base { d; }; test() { cout << Son所占字节数为:" << sizeof(Son) << endl; } ; }
输出:
我们发现父类的所有属性都被继承了,但是private类型的属性在子类中却不能被访问。
继承中构造和析构顺序:父类构造、子类构造、子类析构、父类析构。
继承中同名处理方式:访问子类同名成员,直接访问;访问父类同名成员,需要加作用域;
#include<iostream> a; Base() { a = 10; } show() { cout << Base endl; } }; Base { : Son() { a = 20Son test() { Son s; cout << s.a << endl; cout << s.base::a << endl; s.show(); s.base::show(); } ; }
输出:
继承中同名静态成员处理:与同名成员处理一致,只不过通过类名直接访问而不是对象访问时需要加各自的作用域,即
Base::a;
Son::a;
Son::Base::a;
多继承语法:c++可以有多重继承。class A:public B,public C{};
菱形继承:两个子类同时继承一个基类;又有某个类同时继承这两个子类;
存在两个问题:
#include<iostream> a; }; class Son1 : Base {}; class Son2 :class End :public Son1, Son2 {}; test() { End e; e.son1::a = ; e.son2::a = ; cout << e.son1::a << endl; cout << e.son2::a <<; }
此时输出:
加入了virtual之后:(vbptr虚基类指针,通过偏移量找到唯一的一份数据)
#include<iostream> class Son1 :virtual class Son2 :; }
此时输出:就只有一份数据了
以上是大佬教程为你收集整理的c++之继承全部内容,希望文章能够帮你解决c++之继承所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。