第二章继承与派生-创新互联

这节课,我们来学习继承。

站在用户的角度思考问题,与客户深入沟通,找到青河网站设计与青河网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:做网站、网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名、网络空间、企业邮箱。业务覆盖青河地区。

当从基类派生出新类时,可以对派生类作如下几个变化:

1、可以增加新的成员函数。

2、可以增加新的成员变量。

3、可以重新定义已有的成员函数。

4、可以改变现有的成员属性。

我们先来学习一个简单的派生例子

//这是一个简单的派生例子

首先,创建一个Location类

Location.h文件如下:

#include 
using namespace std;
class Location
{
private:
    int iPointX;
                                                                                                                                                                                                                                                                                                                   
public:
    void setPointX(int _iPointX)
    {
        iPointX = _iPointX;
    }
    void showX()
    {
        cout<<"X="<

再创建一个Rectangle类

Rectangle.h文件如下:

#include 
#include "Location.h"
//此处可以不写因为可以继承
//using namespace std;
class Rectangle:public Location
{
private:
    int iHight;
                                                                                                                                                                                                                                                                                          
public:
    void setHight(int _iHight)
    {
        iHight = _iHight;
    }
    void showH()
    {
        cout<<"H = "<

main函数如下:

#include "Rectangle.h"
int main(int argc, const char * argv[])
{
    Rectangle rect;
    rect.setPointX(10);
    rect.setHight(20);
                                                                                                                                                                                                                                                                                      
    rect.showX();
     rect.showH();
                                                                                                                                                                                                                                                                                       
    return 0;
}

代码下载:http://pan.baidu.com/share/link?shareid=2883935448&uk=3189484501

访问规则

私有派生例子:

#include

usingnamespacestd;

//程序分析:

//在这个例子中,基类的公有成员iVarA通过私有派生成了派生类的私有成员,所以当Derived类再派生其子类时,iVarA是不可访问的。

//由于私有派生这个特点,因此在实际工作中私有派生很少使用。

class Base
{
public:
int iVarA;
    Base()
    {
iVarA = 10;
    }
};
class Derived:private Base
{
public:
int iVarC;
    Derived()
    {
iVarC = 30;
    }
void show()
    {
cout<

代码下载: http://pan.baidu.com/share/link?shareid=3533495783&uk=3189484501

保护派生

#include 
using namespace std;
//程序分析:
//在保护派生中,基类的私有和不可访问成员在派生类中是不可访问的成员在派生类中是不可访问的,基类的保护成员继续是保护的,而基类的公有成员在派生类中则变为保护的。
class Base
{
                                                                                                                                                                                                       
                                                                                                                                                                                                       
public:
    int iVarA;
    Base()
    {
        iVarA = 10;
    }
};
class Derived:protected Base
{
                                                                                                                                                                                                       
public:
    int iVarC;
    Derived()
    {
        iVarC = 30;
    }
    void show()
    {
        cout<

下载地址:http://pan.baidu.com/share/link?shareid=792966415&uk=3189484501

多重继承例子

#include 
//类C是从类A和类B中共同派生出来的。类C从类A公有派生,因此,类A的中公有函数setA和showA在类C中都是公有。
//类C从类B中私有派生,所以类B中的公有函数,在类C中就是私有的。
using namespace std;
class A
{
private:
    int iVarA;
                                                                                                                                                                                          
                                                                                                                                                                                          
public:
    void setA(int _iVarA)
    {
        iVarA = _iVarA;
    }
    void showA()
    {
        cout<<"iVarA:"<

多重继承中构造函数和析构函数的调用顺序

#include 
using namespace std;
class A
{
protected:
    int iVarA;
                                                                                                                                                                     
public:
    A(int _iVarA)
    {
        iVarA = _iVarA;
        cout<<"Construction A,iVarA = "<

代码下载: http://pan.baidu.com/share/link?shareid=1098289671&uk=3189484501

多重继承中的二义性

#include 
using namespace std;
class A
{
                                                                             
public:
    void Show()
    {
        cout<<"A"<

代码下载:  http://pan.baidu.com/share/link?shareid=1143818360&uk=3189484501

多层继承的二义性

#include 
using namespace std;
//多层继承: 如果一个派生类从多个基类中派生,并且这些基类又有一个共同的基类,则在这个派生类中访问这个共同的基类中的成员时可能出现二义性。
class Base
{
                                                  
public:
    int iBaseData;
                                                  
};
class A:public Base
{
                                                  
public:
    int iAData;
};
class B:public Base
{
                                                  
public:
    int iBData;
};
class Object:public A,public B
{
                                                  
public:
    int iObjectData;
};
int main(int argc, const char * argv[])
{
    Object obj;
    obj.A::iBaseData = 10;
    obj.B::iBaseData = 20;
    cout<<"obj.A::iBaseData = "<高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻标题:第二章继承与派生-创新互联
本文URL:http://azwzsj.com/article/ggjco.html