#include<iostream>
using namespace std;
class A{
public:
int a = {99};
virtual void f(){
cout << "father->a:" << a << endl;
cout << "father->b:" << b << endl;
}
private:
int b = {11};
};
class B:public A{ //默认的为私有继承,所以要加public
public:
int a = {88};
void f(){
cout << "son->a:" << a << endl;
cout << "son->b:" << b << endl;
cout << "son call father a:" << A::a << endl;//son call father's variable of method
//cout << "son call father b:" << A::b << endl;// error: 'int A::b' is private
}
private:
int b = {55};
};
int main(){
A *a = new B;
(*a).f();//"."的优先级高于"*"
B *b = new B;
b->f();
static_cast<B*>(a)->f();// 因为是指针,所以别用成员符号".",而是"->"
static_cast<A*>(a)->f();
cout << "===================" << endl;
cout << static_cast<A*>(a)->a << endl;
cout << a->a << endl;
cout << b->a << endl;
return 0;
}
C:\Users\jackz\Desktop\codes\cpp>g++ -std=c++11 subExtensFatherVariable.cpp
C:\Users\jackz\Desktop\codes\cpp>a
son->a:88
son->b:55
son call father a:99
son->a:88
son->b:55
son call father a:99
son->a:88
son->b:55
son call father a:99
son->a:88
son->b:55
son call father a:99
===================
99
99
88