免费注册 查看新帖 |

Chinaunix

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

[C++] 私有继承,好奇ing  关闭 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-07 20:58 |只看该作者 |倒序浏览
今天去面试,有一道题目是考私有继承、公有继承的。我一直以为什么公有、私有继承是垃圾特性,本来就不改,全用公有就是了,这次翻船了。刚才又找了一些资料看看私有继承是怎么回事,写个试验性的程序。原来是这样:
class Base{
public:   
    int a;                              
};   

class SubObj:private Base{
public:
    SubTestObj(){
        cout<<"SubTestObj init"<<endl;   
        
    }               
    void func1(){  
        cout<<a<<endl; //这里可以访问a
        cout<<"SubTestObj::func1"<<endl;   
    }               
};


但是在下面的函数里无法访问Base的a:

void test(){
  SubObj sub;

//  std::cout<<sub.a<<std::endl;  //错误,不可以访问a
}


有的资料也说私有继承不要使用,好像是Lipman说的。既然这种特性不让人们使用你他妈还做这种特性做什么?!有意义吗?
我再一次发现:c++确实是一帮傻逼脑残的人琢磨出来的,真奇怪还一帮傻逼脑残使用c++写程序!

[ 本帖最后由 UnixStudier 于 2008-7-7 21:10 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2008-07-07 21:00 |只看该作者
类似的白痴特性还有好多,那天惹恼了,接着骂.

论坛徽章:
0
3 [报告]
发表于 2008-07-07 21:01 |只看该作者
原帖由 UnixStudier 于 2008-7-7 20:58 发表
今天去面试,有一道题目是考私有继承、公有继承的。我一直以为什么公有、私有继承是垃圾特性,本来就不改,全用公有就是了,这次翻船了。刚才又找了一些资料看看私有继承是怎么回事,写个试验性的程序。原来是这 ...


你的代码也写得很飘逸:
class Base{
public:   
    int a;                              
};   

class SubObj:private TestObj{
public:
    SubTestObj(){
        cout<<"SubTestObj1 init"<<endl;   
        
    }               
    void func1(){  
        cout<<a<<endl; //这里可以访问a
        cout<<"SubTestObj1::func1"<<endl;   
    }               
};

================
我看了半天没看出 SubObj 和Base 有啥关系

论坛徽章:
0
4 [报告]
发表于 2008-07-07 21:06 |只看该作者
这就叫“神龙见首不见尾”啊!

论坛徽章:
0
5 [报告]
发表于 2008-07-07 21:11 |只看该作者
抱歉,抄到这里的时候改写了一部分,以致出现了不一致。
在我的dev-c++上做试验的时候基类的名字是TestObj

论坛徽章:
0
6 [报告]
发表于 2008-07-07 21:18 |只看该作者
原帖由 UnixStudier 于 2008-7-7 21:11 发表
抱歉,抄到这里的时候改写了一部分,以致出现了不一致。
在我的dev-c++上做试验的时候基类的名字是TestObj


虽然lz骂得比较激烈 但我也不得不承认 我从来没想过要用私有继承

论坛徽章:
0
7 [报告]
发表于 2008-07-07 21:20 |只看该作者
其实类似的特性很多很多,c++设计得实在太糟糕了。

论坛徽章:
0
8 [报告]
发表于 2008-07-07 21:23 |只看该作者
lz偏激了吧。

论坛徽章:
0
9 [报告]
发表于 2008-07-07 21:29 |只看该作者
呵。我觉得现在这个时代c++的生存空间很小了
web编程都让jsp/php/c#这些占了。
系统编程其实还是c语言比较好一些,如果想要方便编程可以c加python/perl等
桌面编程还是 c#/objective-c.
服务端编程,java的市场估计也会增大,现在java的执行速度也挺快的。
c++的生存空间很小。
对批评c++的缺点我没什么兴趣。除非是把我惹毛了,不然我才懒得骂它。多琢磨怎么多赚几两银子我倒是很有兴趣。

[ 本帖最后由 UnixStudier 于 2008-7-7 21:30 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2008-07-07 21:32 |只看该作者
原帖由 UnixStudier 于 2008-7-7 21:29 发表
呵。我觉得现在这个时代c++的生存空间很小了
web编程都让jsp/php/c#这些占了。
系统编程其实还是c语言比较好一些,如果想要方便编程可以c加python/perl等
桌面编程还是 c#/objective-c.
服务端编程,java的 ...


恩 只是相对小 走进一看 绝对值仍然很大
至少游戏开发还需要c++
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP