免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2843 | 回复: 12
打印 上一主题 下一主题

求高手解答 一道考试题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-18 14:58 |只看该作者 |倒序浏览
想不到我们的面向对象考试有怎么一道又点难度的题
有几个问题我想问一下大家

代码如下:

#include <iostream>

using namespace std;

class B
{
    public:
        int i;
        virtual void p( )
        {
            cout << i << " in the B " << endl;
        }
};

class D1 : public B
{
    public :
        void p( )
        {
            cout << i << " in the D1 " << endl;
        }
};

class D2 : private B
{
    public:
        D2( )
        {
            B::i = 4;
        }
        int i;
        void p( )
        {
            cout << B::i << " in the D2 with B " << endl;
            cout << i << " in the D2 " << endl;
        }

};

int main()
{
    B b;
    B *pb = &b;

    D1 d1;
    D2 d2;
   
    d1.i = 2;
    d2.i = d1.i + ( b.i = 1 );

    pb->p();

    pb = &d1;
    pb->p();

    pb = ( B * )&d2;
    pb->p();

    return 0;
}

pb = ( B * )&d2; 这一句是什么意思?
pb = &d2 为什么通不过编译?
但是,改class D2 : public B , 就可以通过 ??
高手请解答..

[ 本帖最后由 amaorn 于 2008-1-18 15:08 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-01-18 15:17 |只看该作者
还没有回复呀
学校的期末考试题,还真有点难度..
不知道改卷老师会不会,想不到我们那的SB老师还会出这种题

论坛徽章:
0
3 [报告]
发表于 2008-01-18 15:28 |只看该作者
原帖由 amaorn 于 2008-1-18 15:17 发表
还没有回复呀
学校的期末考试题,还真有点难度..
不知道改卷老师会不会,想不到我们那的SB老师还会出这种题

这样说老师就不好了

论坛徽章:
0
4 [报告]
发表于 2008-01-18 15:38 |只看该作者
我还以为是有人知道了.
研究题目,不要跑题..

是有点过激了...
但是你如果从心里就不承认“老师”这个称号,就无所谓了.
现在这个社会,是个人就能当老师, 什么人都可以教学生,无语。

论坛徽章:
0
5 [报告]
发表于 2008-01-18 16:27 |只看该作者
公有继承可以隐式转换到父类类型,私有继承不可以。

因为私有继承想表达的是“有一个”,所以向上转换是无意义的,所以编译器不会进行隐式转换,除非自己进行显式转换~

论坛徽章:
0
6 [报告]
发表于 2008-01-18 16:29 |只看该作者
老师就是老师~~尽搞理论脱离实际的问题~

论坛徽章:
0
7 [报告]
发表于 2008-01-18 16:41 |只看该作者
显式转换后的意思又是什么了?
pb->i = 10;
可以访问private 继承的 成员变量, private 不是只继承接口吗..

论坛徽章:
0
8 [报告]
发表于 2008-01-18 16:48 |只看该作者
BS lz
老师怎么得罪你了,还是水平太臭?
没看出试题有什么不好的。

还是自己好好看书吧。
第一问太基本;
第二问在 The C++ Programming Language 一书第15章有。

论坛徽章:
0
9 [报告]
发表于 2008-01-18 16:50 |只看该作者
原帖由 amaorn 于 2008-1-18 16:41 发表
显式转换后的意思又是什么了?
pb->i = 10;
可以访问private 继承的 成员变量, private 不是只继承接口吗..



也就是编译器要求你进行强制类型转换,编译器不负责做这么傻的事情

论坛徽章:
0
10 [报告]
发表于 2008-01-18 16:53 |只看该作者
好好,不谈道德问题了...
很多事情,只有经历者才清楚,我又不是说,所有老师
老师是一个神圣的职业,我从来没有不尊重..
只是现在社会上不够格的老师太多了,骗人的多,骗钱的更多,本事技能教不了,人生处事更不懂..现在教育界的悲哀.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP