在公有繼承時,衍生類別的public,private,protected型的成員可以訪問基類中的公有成員和保護成員,衍生類別的對象公可以訪問基類的公有成員.在私人(private)繼承時,衍生類別的public,private,protected型的成員函數可以訪問基類公有成員和保護成員,但衍生類別的對象不可以訪問基類的任何成員.Protected的繼承方式與private繼承相同.
基類 Public繼承 Protected繼承 Private繼承
Public成員 public protected private
Protected成員 protected protected private
Private成員 ---- ------ -----
// InheritTest.cpp : 定義控制台應用程式的進入點。
//
#include "stdafx.h"
using namespace std;
class A
{
public:
const static int a = 1;//若在定義時就初始化,那麼必須聲明為const static
protected:
const static int b = 2;
private:
const static int c = 3;
};
class B : public A
{
public:
B()
{
d = b;//子類可以在內部訪問從父類繼承的protected成員
};
public:
int d;
};
int _tmain(int argc, _TCHAR* argv[])
{
A* obj1 = new A();
B* obj2 = new B();
cout<<obj1->a<<endl;
//cout<<obj1->b<<endl;//對象不能直接從外面訪問protected成員
cout<<obj2->a<<endl;
cout<<obj2->d<<endl;
//cout<<obj->c<<endl;
//getchar();
int i;
cin>>i;
return 0;
}