由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - C++疑问
相关主题
为什么foo1可以而foo2不行?Java里面能 extends Scala object的abstract inner class吗?
vector在constructor里初始化
相关话题的讨论汇总
话题: foo话题: private话题: foo2话题: virtual话题: object
进入Programming版参与讨论
1 (共1页)
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

1 (共1页)
进入Programming版参与讨论
相关主题
为什么foo1可以而foo2不行?Java里面能 extends Scala object的abstract inner class吗?
vector在constructor里初始化
相关话题的讨论汇总
话题: foo话题: private话题: foo2话题: virtual话题: object