F*****n 发帖数: 1552 | 1 关于private里面定义virtual function的两个问题。对于以下程序,
1. a->foo()编译不能通过,说是访问了private member.这是不是表明private里面定
义virtual function毫无意义啊?
2. 既然不被允许访问private member, 这说明complier还是把*a当作B的Object. 然而
a->foo2()也不能通过,因为A没有这个function。为什么作为B的Object连自己public
的member都不能访问呢?
#include
using namespace std;
class A {
int a;
virtual void foo(){
cout << "A:foo" << endl;
}
};
class B:public A{
int b;
void foo(){
cout << "B:foo" << endl;
}
public:
void foo2(){
cout << | c****y 发帖数: 24 | 2 1. A::foo()是private function, B::foo()也是,需要改成public
2. a 是个A*, A中没有foo2(),不能通过 a 访问 B中 foo2()
关于private里面定义virtual function的两个问题。对于以下程序,
1. a->foo()编译不能通过,说是访问了private member.这是不是表明private里面定
义virtual function毫无意义啊?
2. 既然不被允许访问private member, 这说明complier还是把*a当作B的Object. 然而
a->foo2()也不能通过,因为A没有这个function。为什么作为B的Object连自己public
的member都不能访问呢?
#include
using namespace std;
class A {
int a;
virtual void foo(){
cout << "A:foo" << endl;
}
};
class B:public A{
int b;
【在 F*****n 的大作中提到】 : 关于private里面定义virtual function的两个问题。对于以下程序, : 1. a->foo()编译不能通过,说是访问了private member.这是不是表明private里面定 : 义virtual function毫无意义啊? : 2. 既然不被允许访问private member, 这说明complier还是把*a当作B的Object. 然而 : a->foo2()也不能通过,因为A没有这个function。为什么作为B的Object连自己public : 的member都不能访问呢? : #include : using namespace std; : class A { : int a;
| F*****n 发帖数: 1552 | 3
I see. 犯了个低级错误. //sigh...回家面壁三小时
public
【在 c****y 的大作中提到】 : 1. A::foo()是private function, B::foo()也是,需要改成public : 2. a 是个A*, A中没有foo2(),不能通过 a 访问 B中 foo2() : : 关于private里面定义virtual function的两个问题。对于以下程序, : 1. a->foo()编译不能通过,说是访问了private member.这是不是表明private里面定 : 义virtual function毫无意义啊? : 2. 既然不被允许访问private member, 这说明complier还是把*a当作B的Object. 然而 : a->foo2()也不能通过,因为A没有这个function。为什么作为B的Object连自己public : 的member都不能访问呢? : #include
|
|