[C++]类级别的访问修饰符 -- 由一道笔试题引起的一道破窗

来源:互联网 发布:淘宝助理手机版 编辑:程序博客网 时间:2024/05/01 04:30

Question:

C++的类默认的访问修饰符是___?

Answer:

假如你不知道,你很可能会baidu,你很可能会搜到 “ class 为private,struct为public ” 这种答案,然后你很可能认为完工了。

好吧,以上叫做滑坡谬论。但是你看到这文章的时候才知道自己搞错了的话,你成功地化谬论为事实,你发现了人的伟大了么。


嘛,参考答案是:没有。(没看错)


=============心路历程:=================


当然,我首先是不确定的,百度后觉得见鬼了,数天偶然想想,把参考答案确定为没有。

虽然,编程高手教我们去Google,但是他们永远不会知道翻墙是一个更加难的问题,所以你又发现人的伟大:堕落使人快乐


=============心路历程完毕================


撇开上面的废话,然后掠过正确的答案来源(标准C++XX标准之类),探讨我当初的迟疑。

有一个问题叫做:C++的类型可见性不知道?问你自己:

C++的class前面写个public 对不对 ?为什么不对?为什么这样设计?

错误1error C3381: “DD”: 只有在用 /clr 选项编译的代码中才有程序集访问说明符


看到没?当然它不是标准C++。具体的见:命名空间和类型可见性 (C++/CX)


有人说:这不是真正的答案,真正的答案是XXX()

----有人认为错误使愚笨,有人认为错误使人睿智,我认为都对所以都错(执着于唯一性的笨蛋)


其实我只是想深入错误,领略一下别样风情:

首先,复习一下《作用域,存储类型,可视性,生存期》,《白话C++》是一本挺好的书。

再来,看看资深人士的建议:《未能区分可访问性和可见性》,没找到这本的新版扫描电子书。


有个不怎样被新人所熟悉的名词:pimpl ,然后是handle-body (《华为C++进阶》),这里有一篇文章《关于handle-body的用法》


终于绕回来了,不完全类声明才是我想要的,在回来看标准,这是C的不完整类型定义


我缺的是可视性而已,不是正确答案,假如你懂编译原理,你也知道正确答案但不会傻傻地看到了人们为了可视性的不断努力。



-- to be continue