son extends father and override father's variable

来源:互联网 发布:全球气候变暖数据 编辑:程序博客网 时间:2024/06/08 13:17
#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{ //默认的为私有继承,所以要加publicpublic: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.cppC:\Users\jackz\Desktop\codes\cpp>ason->a:88son->b:55son call father a:99son->a:88son->b:55son call father a:99son->a:88son->b:55son call father a:99son->a:88son->b:55son call father a:99===================999988


0 0