第五十九届冠军(使用C++设计一个类不能被继承)

第五十九届冠军(使用C++设计一个类不能被继承)

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

称号:使用C++设计一个类不能被继承。
分析:这是Adobe 公司2007 的笔试题最新校园招聘。

应聘者的C++基本功底外,还能考察反应能力,是一道非常好的题目。


分析:C++中父类的构造函数会调用子类的构造函数,从这一点出发, 我们能够将子类的构造函数权限设为私有,这样父类构造函数在调用子类构造函数时就会出错。可是这样做有一个副作用。私有的构造函数使得我们无法正常创造这个类的对象。尽管能够通过像单例模式中那样通过提供一个静态函数调用私有构造函数产生一个类对象并返回其指针或者引用,但这样仅仅能产生堆上的对象而无法在栈上产生类的局部对象。

这里採用这样一种实现方法:

第五十九届冠军(使用C++设计一个类不能被继承)

使用一个具有私有构造函数的模板类FinalClassBase,FinalClass虚继承于该类,而且为该类的友元,因此FinalClass有权限调用基类的构造函数。这里FinalClass虚继承于FinalClassBase。所以以后全部试图继承FinalClass的派生类。必须在他们的构造函数里直接调用虚基类FinalClassBase的构造函数,此时就会由于没有对应的訪问权限而出错(图中提示不可訪问)。从而限制了FinalClass为一个不能被继承的类,满足了题目的要求。



版权声明:本文博客原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117328.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • php注册登录页面完整代码_用户登录注册代码

    php注册登录页面完整代码_用户登录注册代码先看演示~示例图:Ps.本人有点懒哈~就输出个成功算了吧~PHP实现登录注册index.php(首页)login.php(登录)register.php(注册)代码里面注释写很详细了哦~废话不多说直接上代码~index.php代码:<!DOCTYPEhtml><html><head><metacharset=”utf-8″><metaname=”viewport”content=”width=

    2022年10月3日
    3
  • cmd命令如何切换盘符_请输入windows所在盘符

    cmd命令如何切换盘符_请输入windows所在盘符MS-DOS(/ˌɛmˌɛsˈdɒs/MicrosoftDiskOperatingSystem)isanoperatingsystemforx86-basedpersonalcomputersmostlydevelopedbyMicrosoft.1.开始->运行->cmd->Enter2.切换到D盘3.切换到E盘4.切换到C盘5.退出cmdhttps://yongqiang.blog.csdn.net/…

    2022年10月3日
    2
  • springCloud学习笔记-no.2-eruka server和client

    springCloud学习笔记-no.2-eruka server和client1.转载于:https://www.cnblogs.com/andydlz/p/10283293.html

    2022年8月21日
    8
  • 《前端运维》一、Linux基础–08Shell其他及补充

    这一篇,我们来学习一些重要的命令,在工作中也会经常用到。一、简单正则要注意的是,有些命令不支持正则模式,比如fs、find等,有些是支持正则的,比如grep、awk、sed等。正则的语法和js中的

    2022年3月25日
    38
  • java面试总是通不过_读完这篇文章你有什么感受

    java面试总是通不过_读完这篇文章你有什么感受Java面试题千千万,个人觉得没有最好的答案,只有最适合的答案;本文的宗旨是为读者朋友们整理一份详细而又权威的面试清单。此文是前段时间本人根据部分文章汇总压在草稿箱(由于时间关系,忘了加上对应的原创链接,如有侵权,请联系本人删除,本人单纯秉着知识乐于分享的精神),今天发现在草稿箱,特发出来给大家,仅供参考。注:本人才疏学浅,知识还在积累中,不能保证每个回答都满足各种等级的高手们,(由于一些技术的升级,部分答案不能保证实时同步准确,还请大家在阅读的时候多多留意)若发现有问题的话,请评论指出。…….

    2022年10月6日
    3
  • 0xFFFFFFFF解读[通俗易懂]

    0xFFFFFFFF解读[通俗易懂]十六进制颜色AndroidAPP程序坞显示颜色值必须使用十六进制颜色,刚开始完全不知道怎么解读0xFFFFFF,百度上也没说出来个123来,最后经过查阅各种资料,解读到:0x十六进制数开头前面两个FF代表透明度后面的跟平常使用的颜色值一样例如0xFFFFFFFF等同于#FFFFFF…

    2022年5月13日
    94

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号