扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
一、认识继承
创新互联建站长期为近千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为峡江企业提供专业的成都网站设计、成都网站建设,峡江网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制开发。什么是继承呢,就是一个对象有另一个对象的所有特征,并且在这些特征上还有新的属于自己的特征,则一个对象就是另一个对象的继承。比如儿子继承父亲的相貌之外还有自己的相貌特征。在C++中,继承是面向对象复用的重要手段。通过继承定义一个类,它们的类型之间的关系建模,共享公有的东西,实现各自本质不同的东西。
二、继承的作用
打个比方,你描述了狗这个对象,对于黑狗,只需描述狗是黑的这一特征,并不需要再去把狗描述一遍。因为黑狗继承了狗的所有特征,并且拥有自己是“黑”的这一特征。对于这样的继承,我们可以利用过去的类建立新的类,节省编程工作量,减少冗余代码。
三、继承关系
我们都知道,在类中,有public,private,protected三种成员访问限定符,对于继承来的子类,它的成员又有怎样的访问限定呢?我们通过一个表来说明一下。
同时,我们通过实例来看一下他们之间的相互继承关系
class Base
{
public:
Base()
{
cout<<"B()" <<endl;
}
~Base ()
{
cout<<"~B()" <<endl;
}
void ShowBase()
{
cout<<"_pri = " <<_pri<< endl;
cout<<"_pro = " <<_pro<< endl;
cout<<"_pub = " <<_pub<< endl;
}
private:
int _pri;
protected:
int _pro;
public:
int _pub;
};
class Derived:public Base
{
public:
Derived()
{
cout<<"D()"<<endl;
}
~Derived ()
{
cout<<"~D()"<<endl;
}
void ShowDerived()
{
cout<<"_pri = "<<_pri< cout<<"_pro = "<<_pro< cout<<"_pub = "<<_pub< cout<<"_d_pri = "<<_d_pri<< endl; cout<<"_d_pro = "<<_d_pro<< endl; cout<<"_d_pub = "<<_d_pub<< endl; } private: int _d_pri; protected: int _d_pro; public: int _d_pub; }; 对于代码中的绿色的一行,显然是不能够被编译通过的,因为他在父类中的成员数据是private的,父类的私有成员在派生类中是不能被访问的。 四、派生类的默认成员函数 派生类也是类,也拥有类的默认成员函数,构造函数,拷贝构造函数,析构函数,赋值运算符重载,取地址符重载,const修饰的取地址操作符重载。 在类中,构造函数有着调用顺序,对于继承关系中的构造函数调用顺序又将是是怎样的呢?我们来看一下。 同时析构函数的调用顺序如下图 我们在通过代码实例来看一下构造,析构函数得调用顺序 class B { public: int data1; }; class B1: virtual public B { public: int data2; }; class B2: virtual public B { public: int data3; }; class D:public B1, public B2 { public: void FunTest() { B1::data1 = 0x01; data2 = 0x02; B2::data1 = 0x03; data3 = 0x04; data4 = 0x05; cout< cout<<&B1::data1< cout<<&data2< cout<<&B2::data1< cout<<&data3< cout<<&data4< cout< } int data4; }; int main() { cout< cout< cout< cout< D d; d.FunTest(); return 0; } 五、单继承与多继承 单继承--一个子类只有一个直接父类时称这个继承关系为单继承 多继承--一个子类有两个或以上直接父类时称这个继承关系为多继承 另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
名称栏目:C++继承总结-创新互联
文章来源:http://kswjz.com/article/cedspi.html
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流