c++第四次做業

派生類ios

定義方式: class 派生類名    基類名1,繼承方式  基類名2,繼承方式...函數

{this

    派生類成員聲明;spa

}code

類的繼承blog

對於類之間可以相互繼承,分別是公有繼承,私有繼承,以及保護繼承。繼承

公有繼承接口

繼承所有類的成員可是對於基類的私有類沒法進行直接訪問,只能經過基類函數進行使用。get

例如:io

#include <iostream>
#include <math.h>
using namespace std;

class point
{
public:
void set1(int x, int y);
void show();
int getx()
{
return x;
};
int gety()
{
return y;
};
private:
int x;
int y;
};
void point::set1(int x, int y)
{
this->x = x;
this->y = y;
}

void point::show()
{
cout << "x=" << x << endl << "y=" << y << endl;
}

class line :public point
{
public:
void set(int x,int y);
float todis();
private:
float dis;
};

void line::set(int x, int y)
{
set1(x,y);
}

float line::todis()
{
dis = sqrt((getx() * getx()) + (gety() * gety()));
return dis;
}

int main()
{
line a;
a.set(3, 4);
a.show();
cout << a.todis() << endl;
}

其中point類中的show函數是能夠被直接調用的。

私有繼承

對於私有繼承,基類的共有成員與保護成員以私有成員的形式出如今派生類中,可是對於基類的私有成員依然沒法進行直接訪問

例如

#include <iostream>
#include <math.h>
using namespace std;

class point
{
public:
    void set1(int x, int y);
    void show();
    int getx()
    {
        return x;
    };
    int gety()
    {
        return y;
    };
private:
    int x;
    int y;
};
void point::set1(int x, int y)
{
    this->x = x;
    this->y = y;
}

void point::show()
{
    cout << "x=" << x << endl << "y=" << y << endl;
}

class line :private point
{
public:
    void set(int x,int y);
    float todis();
    void show1();
private:
    float dis;
};

void line::set(int x, int y)
{
    set1(x,y);
}

float line::todis()
{
    dis = sqrt((getx() * getx()) + (gety() * gety()));
    return dis;
}

void line::show1()
{
    cout << dis<<endl;
    show();
}

int main()
{
    line a;
    a.set(3, 4);
    cout << a.todis() << endl;
    a.show1();
}

其中沒法直接直接調用line類 a沒法直接使用point中的show函數必須在從新建立接口函數

保護繼承

對於保護繼承,基類的共有成員與保護成員以保護成員的形式出如今派生類中,可是對於基類的私有成員依然沒法進行直接訪問

例如

#include <iostream>
#include <math.h>
using namespace std;

class point
{
public:
void set1(int x, int y);
void show();
int getx()
{
return x;
};
int gety()
{
return y;
};
private:
int x;
int y;
};
void point::set1(int x, int y)
{
this->x = x;
this->y = y;
}

void point::show()
{
cout << "x=" << x << endl << "y=" << y << endl;
}

class line :protected point
{
public:
void set(int x,int y);
float todis();
void show1();
private:
float dis;
};

void line::set(int x, int y)
{
set1(x,y);
}

float line::todis()
{
dis = sqrt((getx() * getx()) + (gety() * gety()));
return dis;
}

void line::show1()
{
cout << dis<<endl;
show();
}

int main(){ line a; a.set(3, 4); cout << a.todis() << endl; a.show1();}

相關文章
相關標籤/搜索