基本语法
对多个类中重复的地方,提取为类
继承的基本用法
class df { public: int j() { cout<<"iuwghrfi3f"; } }; class fg1:public df { public: fg1(){}; int a; string s; void operator()() { cout<<this->a; } };
|
三种继承方式
class df { public: int a; protected: int b; private: int c; }; class fg1:public df { public:int a; protected: int b; }; class fg2:protected df { protected: int a;int b; }; class fg3:private df { private:int c; };
|
限定让父类参与但可以带入子类的方法
class s { public: int a=2; int sd() { return 22; } }; class bb:public s { public: bb() { a=1; cout<<"bb部署,序列= "<<g<<endl; g++; } ~bb() { cout<<"bb寄了"<<endl; } int a; int sd() { return 11; } }; void cou(s &a) { cout<<"s的a启动!"; }
|
如上,程序返回”s的a启动!”,即使调用函数的是类s的子类而不是类s本身。
父类,父类中的类,子类,子类中的类的生成
class ba { public: ba() { cout<<"ba部署,序列= "<<g<<endl; g++; } ~ba() { cout<<"ba寄了"; } }; class bb:public fg { ba s; public: bb() { cout<<"bb部署,序列= "<<g<<endl; g++; } ~bb() { cout<<"bb寄了"<<endl; } };
|
一大坨东西
如上,子类访问父类需要限定符::
s1为类a1的对象,s2的对象a2包含在类a1中,类a2的父类为a3,它的对象为s3
如
注:静态/非静态的同名成员都可以通过::fangwen
int main() { bb s; cout<<s.a<<endl<<s.s::a<<endl; cout<<s.sd()<<endl<<s.s::sd()<<endl; }
|
s为类bb的对象,a为s的数据成员,sd为类a的成员函数,另一个s为子类s的父类(二者重名),通过::访问 父类中的同名成员
多继承
class bb:public s,public df
|
只能看一眼
因为不常用。
菱形继承
和多继承一样,懒得写了
virtual限定虚基类
因为现在是