avatar
F*n
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 <<
avatar
c*y
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;

avatar
F*n
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

相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。