我正在浏览一些开源的C++代码,并注意到代码中使用的分数很多,主要是在变量名称的开头.
return __CYGWIN__;
Run Code Online (Sandbox Code Playgroud)
只是想知道是否有这样的原因,或者只是一些人的代码风格?我认为我很难读.
我对结构和类之间的区别感到非常困惑,因为我似乎看到它们用于几乎相同的东西.我搜索了差异,我看到的唯一答案是默认情况下结构体有公共成员,默认情况下类有私有成员.但是,我的讲师刚刚告诉我结构不能包含成员函数.但我在互联网上看到很多线程,其中人们在结构中包含成员函数,并且具体说这样做是可以的.
我的讲师似乎坚持认为结构定义不具备功能,所以发生了什么?我唯一能想到的是,编译器可能会将结构中的函数更改为其他内容,以便它们在技术上不包含函数......这些矛盾是否有明确的答案?
我刚刚浏览并发现以下内容......
根据惯例,你应该只使用结构用于POD,没有方法等.
我一直认为某些类型是自然结构而不是类,但仍然可以有一些辅助函数作为成员.结构应该仍然是大多数通常规则的POD - 特别是使用memcpy复制必须是安全的.它必须公开所有成员数据.但是,将助手功能作为成员对我来说仍然有意义.我甚至不一定会反对私人方法,尽管我不记得曾经这样做过.虽然它打破了正常的POD规则,但我不反对具有构造函数的结构,只要它们只是初始化 - 少数字段构造函数(重写赋值或析构函数肯定会违反规则).
对我来说,结构直观地是字段的集合 - 数据结构节点或其他 - 而类是抽象.为字段集合提供辅助函数的逻辑位置可能在结构中.
我甚至认为我曾经沿着这些方向阅读过一些建议,尽管我不记得在哪里.
这是否违反公认的最佳做法?
编辑 - POD(普通旧数据)被这个问题误传.特别是,结构可以是非POD纯粹因为成员是非POD - 例如具有std :: string类型成员的聚合.不得使用memcpy复制该聚合.如果有困惑,请看这里.
我正在上C++中的面向对象编程课程.在最近的一项任务中,我定义了一个成员函数struct
.我的讲师解释说,尽管在结构体中使用成员函数是可编辑的,但他希望我们没有,为了向后兼容C,并且(特别是在这个初学者类中)实践良好的数据封装 - 我们应该使用a struct
类型主要包含数据,以及class
适用于更多程序封装的应用程序.他表示这种做法来自于C++中结构/类的历史,这是我想要了解的更多内容.
我知道除了默认的成员/继承访问之外,结构在功能上与类相同.我的问题是:
为什么结构和类包含在C++中?从我在C#中的背景,结构和类有重要区别,似乎struct
在C++中只是用于定义具有默认public-ness的类的语法糖.是吗?
我不是在寻找关于何时/为什么应该使用而不是使用其他人的意见 -在这些结构之后我出生得很好,而且我正在寻找它们的历史.他们在一起构思了吗?如果是这样,为什么?如果没有,哪个是第一个,为什么第二个被添加?我意识到在这个社区中有许多古老的长者可能对这些特征的起源有所记忆,并且标准出版物的链接或代码的例子,其中一个或另一个首次出现,将增加答案的帮助.
请注意,这个问题不是: