Mic*_*ann 15 c++ standards struct class
我正在上C++中的面向对象编程课程.在最近的一项任务中,我定义了一个成员函数struct.我的讲师解释说,尽管在结构体中使用成员函数是可编辑的,但他希望我们没有,为了向后兼容C,并且(特别是在这个初学者类中)实践良好的数据封装 - 我们应该使用a struct类型主要包含数据,以及class适用于更多程序封装的应用程序.他表示这种做法来自于C++中结构/类的历史,这是我想要了解的更多内容.
我知道除了默认的成员/继承访问之外,结构在功能上与类相同.我的问题是:
为什么结构和类包含在C++中?从我在C#中的背景,结构和类有重要区别,似乎struct在C++中只是用于定义具有默认public-ness的类的语法糖.是吗?
我不是在寻找关于何时/为什么应该使用而不是使用其他人的意见 -在这些结构之后我出生得很好,而且我正在寻找它们的历史.他们在一起构思了吗?如果是这样,为什么?如果没有,哪个是第一个,为什么第二个被添加?我意识到在这个社区中有许多古老的长者可能对这些特征的起源有所记忆,并且标准出版物的链接或代码的例子,其中一个或另一个首次出现,将增加答案的帮助.
请注意,这个问题不是:
为了简化多语言标题的开发.
C和C++是不同的语言,但C++语言旨在通过C语言提供大量有用的公共子集.C++语言中的几种常用结构与C语言具有相同的含义(或几乎相同).在这种情况下struct,C++语言将其定义为语法糖,用于class近似structC语言中a的行为,即public默认情况下成员.因此,程序或其部分可以写在该公共子集中.例如,这允许库提供单个头文件,该文件向用C语言编写的程序和用C++语言编写的程序声明相同的API.
C语言和C++语言之间的一些差异列在一个问题中,该问题已被关闭过于宽泛.从这种通用子集语言中的某些编程的角度来看,这些差异可以被视为"实现定义的行为",其中C语言的编译器产生一种行为,而C++语言的编译器产生另一种行为.
事实上,C++标准提供了一些机制来帮助开发在C和C++语言中都有效的多语言程序.所述extern "C"联动符允许部分C和部分地以C++来编写一个程序.并且__cplusplus符号在#ifdef __cplusplus条件中用于有条件地启用宏,链接说明符以及只应该看到两种语言中的一种的其他细节.
| 归档时间: |
|
| 查看次数: |
1192 次 |
| 最近记录: |