读书人

有关C++类的一个有关问题

发布时间: 2012-02-19 19:43:38 作者: rapoo

有关C++类的一个问题
# include <iostream>
using namespace std;

class A
{
public:
void f()
{
cout < < "A::f() " < <endl;
}
};

class B:public A
{
public:
void f()
{
cout < < "B::f() " < <endl;
}
};

class C:public B
{
public:
void f()
{
cout < < "C::f() " < <endl;
}
};

int main()
{
B b;
b.f();
b.A::f();

cout < < "*************************** " < <endl;

C c;
c.f(); //这里引用的是类C中的f();

c.B::f(); //这里引用的是类B中的f();

//其实B继承A时,包含了A中的f(),C继承了B,当然也包含A中的f(),
//那么,我能不能用类似c.B::f();这种方式来引用c中的A::f()呢?

return 0;
}

不知上面我的理解对不对,
麻烦哪个会懂的解释下啊。谢谢了。


[解决办法]
那你就c.A::f()编译运行试一下嘛。
[解决办法]
可以的,但能不能绕个弯,再用上B呢?C是继承B来的啊。

不能这样:c.B::A::f()
因为A并不是B的成员,虽然f是.

[解决办法]
c.A::f()
vc通过
[解决办法]
可以。。。
[解决办法]
to taodm

是吗?我在VC6下编译的,没试dev...
[解决办法]
直接使用c.A::f();

VC6.0下面编译通过,运行一切正常
[解决办法]
又是VC6,真够浪费生命的。

嘛意思啊?vc我一直觉得没必要学,但你的这种领悟境界我还是没达到
[解决办法]
devc++下全部没问题啊
[解决办法]
不能用c.B::A::f()
因为A不是B的成员

读书人网 >C++

热点推荐