1:繼承的本質和原理
2:派生類的構造程序
3:多載,覆寫,隱藏
4:靜態系結和動態系結
5:多型,vfptr,vftable
6:抽象類的設計原理
7:多重繼承以及問題
8:虛基類 vbptr 和vbtable
9:RTTI
10:C++四種型別強轉
繼承的本質和原理
1:代碼的復用
類和類之間的關系
組合: a part of ..... 一部分的關系
繼承: a kind of ..... 一種的關系
//代碼1:
class A{
public:
int ma;
protcted:
int mb;
private:
int mc;
}
class B{
public:
int md;
int ma;
potected:
int me;
int mb;
private:
int mf;
int mc;
}
代碼2:
class A{
public:
int ma;
protcted:
int mb;
private:
int mc;
}
//B繼承 A,
class B : public A{
public:
int md;
potected:
int me;
private:
int mf;
}

如上圖,B繼承A,那么B中對A 的ma ,mb,mc 的訪問方式是怎么樣的?能否訪問?如下
class B : public A{
public:
int md;
void f(){
cout<<ma<<endl ; // ??????
}
potected:
int me;
private:
int mf;
}

1:父類的私有成員,子類不管是public,protected,private 哪種方式繼承,子類中都是不可見的(注意不是private)
2:外部只能訪問public成員,protected和private 的成員無法直接訪問
3:在繼承結構中,派生類從基類可以繼承過來private成員,但是派生類中是看不見的(無法直接訪問)
4:protected和private的區別?在基類中定義的成員,想被派生類訪問,不想被外部訪問,那么在基類
把相關成員定義成protected的,如果派生類和外部都不打算訪問,那么在基類中,就把想關成員定義成private私有的
看下面繼承方式
class A{
public:
int ma;
protcted:
int mb;
private:
int mc;
}
//B私有 繼承 A,
class B : private A{
public:
int md;
potected:
int me;
private:
int mf;
}
class C : public B{
public:
void function(){
ma,mb ,mc md, me,mf ;的訪問權限是什么?
ma 在 A 中是共有成員 -> 到B中 變成私有成員了 -》 C 中就不可見了
mb 在 A 中是保護成員 -> 到B中 變成了私有成員了-> c 中不可見
mc 在 A 中是私有成員 -> 到B中 不可見 -> C中也不可見
md 在 B 中四 共有成員 -> C中還是共有 -> main(外部)可訪問
me 在 B 中四 保護成員 -> C中還是保護(C中可訪問) -> main(外部)不可訪問
mf 在 B 中四 私有成員 -> C中不可見 -> main(外部)不可見
}
}
默認的繼承方式是什么?
要看派生類是用class定義的還是struct定義的?
class定義的派生類,默認繼承方式是private私有的
struct定義的派生類,默認繼承方式是public的
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/538495.html
標籤:C++
上一篇:常用工具類
下一篇:<二>派生類的構造程序
