生活随笔
收集整理的這篇文章主要介紹了
C++多重继承
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
C++多重繼承
1.1一個(gè)派生類繼承多個(gè)基類稱為多重繼承。
1.2聲明多重繼承的方法。
如果聲明了類A,B,C,可以聲明多重派生類D。
class D:public A,private B,protected C
{類D新增加的成員}
1.2多重繼承派生類的構(gòu)造函數(shù),如:
派生類構(gòu)造函數(shù)名(總參數(shù)表列):基類1構(gòu)造函數(shù)(參數(shù)表列),基類2構(gòu)造函數(shù)(參數(shù)表列),基類3構(gòu)造函數(shù)(參數(shù)表列)
{派生類中新增成員的初始化語句}
#include <iostream> #include <string> using namespace std;
class student {
public:
student(
string n,
bool s,
float sco):
name(n),
sex(s),
score(sco){}
protected:
string name;
bool sex;
float score; };
class teacher {
public:
teacher(
string n,
string t,
int a):
name1(n),
title(t),
age(a){}
protected:
string name1;
string title;
int age; };
class graduate:
public student,
public teacher {
public:
graduate(
string n,
bool s,
float sco,
string t,
int a,
float w):
student(n,s,sco),
teacher(n,t,a),
wage(w){}
void show();
private:
float wage; };
void graduate::show() {
cout
<<
"name: " <<
name <<
endl;
cout
<<
"sex: " <<
sex <<
endl;
cout
<<
"score: " <<
score <<
endl;
cout
<<
"title: " <<
title <<
endl;
cout
<<
"wage: " <<
wage <<
endl; }
int main() {
graduate gra(
"fuck",
true,
100,
"shit",
20,
9999999);
gra.show();
return 0; }
C++多重繼承引起的二義性問題
1.1多重繼承經(jīng)常會(huì)由于繼承成員同名而產(chǎn)生二義性問題。 1.2我們可以用域運(yùn)算符::,來限定: c.A::age=5; //引用c對(duì)象中基類A的數(shù)據(jù)成員a 1.3派生類中同名成員會(huì)覆蓋基類中的同名成員。 1.4不同的成員函數(shù),只有在函數(shù)名和參數(shù)個(gè)數(shù)相同,類型相匹配的情況下,才會(huì)發(fā)生同名覆蓋,如果只有函數(shù)名相同而參數(shù)不同,不會(huì)發(fā)生同名覆蓋,而屬于函數(shù)重載。 1.5一段代碼:
#include <iostream> using namespace std;
class A {
public:
void display(){cout
<<
age <<
endl;}
int age; };
class B {
public:
void display(){cout
<<
age <<
endl;}
int age; };
class C:
public A,
public B {
public:
C(
int c):
ceat(c){}
void show(){cout
<<
A::age
<<
"c" <<
endl;}
int age;
private:
int ceat; };
int main() {
C c(
5);
c.
age=
1;
c.
A::age=
5;
c.show();
return 0; }
總結(jié)
以上是生活随笔為你收集整理的C++多重继承的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。