打印

指针问题

[复制链接]
737|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sinadz|  楼主 | 2012-4-24 18:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
class BASE
{
public:
        BASE(): aa(
293) {}
        
virtual
void print() {cout<<"Hello\n";}
        
virtual
void
set() {aa =
103;}
        
int aa;

};

class Derived : private BASE  //换成protected也一样
{
public:
        
//Derived(): BASE(103) {}
        BASE* pr(Derived* d)
        {
            
return d;
        }
        
void
set(){aa=39;}
        
void print(){;cout<<"World\n"
<<
this->aa << endl;}
};

int main()
{
//BASE *p = new Derived;//为什么派生类的指针不能给基类
Derived dd;
BASE
*p = dd.pr(new Derived); //这样就行,原先我理解。private继承,基类中的所有成员在派生类中为private访问
//编译器拒绝将 派生类的指针转换到基类。。是为了防止,用户调用在派生类中 已经是private基类的成员。。
//难道这不是派生类指针?

p
->print();
cout
<< p->aa << endl;
p
->set();
cout
<< p->aa;

}

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝