由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 虚函数access权限改变问题
相关主题
C++ Q98: Call member function in virtual function (转载)which func will be called?
C++ 弱问一个为什么我看不懂下面的code,是不是水平还不够?
请教 C++的一个困惑 (operator delete)C++疑问
面试问题c++ 是否也有class method??
C++问题c++ 得最基本问题
问个C++ virtual function的问题 (转载)C++: static_cast and dynamic_cast
大家来做题C++。问个char*的问题
我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。[合集] 关于构造函数
相关话题的讨论汇总
话题: d2话题: base话题: method话题: access话题: virtual
进入Programming版参与讨论
1 (共1页)
z****e
发帖数: 2024
1
class Base{
public:
virtual void Method();
};
void Base::Method(){cout<<"Base::method"< class D2:public Base{
private:
void Method(){cout<<"D2::method"< };
void peek(Base& b){
b.Method();
}
int main(){
D2 d;
peek(d);
}
>D2::method
为什么D2虚函数是私有,但是通过一个global函数,仍然有多态?
虚函数的访问权限改变,有作用吗?
早谢。
N***m
发帖数: 4460
2
guess it is still in v-table so you can still use pointer to access it

【在 z****e 的大作中提到】
: class Base{
: public:
: virtual void Method();
: };
: void Base::Method(){cout<<"Base::method"<: class D2:public Base{
: private:
: void Method(){cout<<"D2::method"<: };
: void peek(Base& b){

t****t
发帖数: 6806
3
In short, access checking is static, although virtual function binding is
dynamic.
11.6 Access to virtual functions [class.access.virt]
1 The access rules (clause _class.access_) for a virtual function are
determined by its declaration and are not affected by the rules for a
function that later overrides it. [Example:
class B {
public:
virtual int f();
};
class D : public B {
private:
int f();
};
void f()
{
D d;
B* pb = &d;


【在 z****e 的大作中提到】
: class Base{
: public:
: virtual void Method();
: };
: void Base::Method(){cout<<"Base::method"<: class D2:public Base{
: private:
: void Method(){cout<<"D2::method"<: };
: void peek(Base& b){

z****e
发帖数: 2024
4
orz。

【在 t****t 的大作中提到】
: In short, access checking is static, although virtual function binding is
: dynamic.
: 11.6 Access to virtual functions [class.access.virt]
: 1 The access rules (clause _class.access_) for a virtual function are
: determined by its declaration and are not affected by the rules for a
: function that later overrides it. [Example:
: class B {
: public:
: virtual int f();
: };

1 (共1页)
进入Programming版参与讨论
相关主题
[合集] 关于构造函数C++问题
用数组做参数,在函数内部如何知道数组的size?问个C++ virtual function的问题 (转载)
请教一道入门小题大家来做题C++。
protected/private inheritance我这个C++程序有没有什么问题啊?请指点。。。谢谢。。。
C++ Q98: Call member function in virtual function (转载)which func will be called?
C++ 弱问一个为什么我看不懂下面的code,是不是水平还不够?
请教 C++的一个困惑 (operator delete)C++疑问
面试问题c++ 是否也有class method??
相关话题的讨论汇总
话题: d2话题: base话题: method话题: access话题: virtual