支持HW团队,就支付宝领取下面的红包吧! (打开支付宝就能领取!er1OEj73Uj), (打开支付宝收索“516503473”), 你领取消费,HW有奖励。红包使用无条件限制,有条件请注意是不是有病毒。

Login or Sign up | Validate
| Search
HelloWorld论坛 : > 计算机科学、技术、教学> 编程入门> c、c++基础> 虚函数 函数重载 当访问权限access control改变时
 
 
 
 
类别:STL、Boost 阅读:6374 评论:0 时间:Feb. 7, 2012, 11:13 a.m. 关键字:

 

#include <iostream>
using namespace std;
 
class Base
{
public:
virtual void show() {
cout<<"Base"<<endl;
}
};
 
class De:public Base
{
 
private: 
virtual void show() {
cout<<"Deri"<<endl;
}
};
 
void Test(Base& p)
{
p.show();
}
 
void main() 
{
Base *p = new De;
p->show();    //OK output : Deri
 
Base ba;
Test(ba);    //OK : base
 
De da;
Test(da);    //OK : Deri
}
 
我们 可以认为虚函数不受访问权限限制,基类重写虚函数,都会覆盖父类同样的虚函数
 
类虚拟成员函数的访问性是由调用该函数的指针决定的
 
 
#include <iostream>
using namespace std;
 
class Base
{
public:
void show() {
cout<<"Base"<<endl;
}
};
 
class De:public Base
{
public:
void show2() {
show();
private:
void show() {
cout<<"Deri"<<endl;
}
};
 
void Test(Base& p)
{
p.show();
}
int _tmain(int argc, _TCHAR* argv[])
{
Base *p = new De;
p->show();    //OK output : Deri
 
Base ba;
ba.show();
 
De da;
Test(da);
da.show2();
}
可见重载成员函数的调用该函数的指针类型决定,要具体调用哪个类,最好前面强制指定
[挂载人]初学MPEG [审核人]初学MPEG 推荐

个人签名--------------------------------------------------------------------------------

Please Login (or Sign Up) to leave a comment