#include<iostream> using namespace std; class aa { public: void func(){cout<<"基类的func函数"<<endl;}; void you(double x){cout<<x<<endl;func();} };
class bb : public aa { public: void func(){cout<<"子类的func函数"<<endl;} }; int main() { bb b; b.you(50.5);//调用从父类继承来的函数,输出结果却是 基类的func函数,没有体现隐藏原则啊 b.func();//直接调用func,这里体现了隐藏原则吧 }
求高手帮我分析一下,第18行是怎么调用父类的func()函数的,或者用函数查找的有关知识帮我解释一下 C++ 隐藏 查找 [解决办法] 这个例子证明隐藏不是一种好的设计(作为失败的典型,你很成功) 还是用覆盖/动态绑定好。
#include<iostream> using namespace std; class aa { public: //make it virtual virtual void func(){cout<<"基类的func函数"<<endl;}; void you(double x){cout<<x<<endl;func();} };
class bb : public aa { public: void func(){cout<<"子类的func函数"<<endl;} }; int main() { bb b; b.you(50.5);//调用从父类继承来的函数,输出结果却是 基类的func函数,没有体现隐藏原则啊 b.func();//直接调用func,这里体现了隐藏原则吧 }