什么时候应该有人在C++中使用结构而不是类,反之亦然?当一个完整的类管理一些信息似乎有点过分,但我想发现自己使用结构,但是想表明所包含的信息都是相关的.我想知道什么是一个好的指导方针,能够分辨哪一个比另一个更合适?
编辑:在阅读材料时发现这些链接在提交问题后,指示的Stack Overflow是相关的:
我刚刚浏览并发现以下内容......
根据惯例,你应该只使用结构用于POD,没有方法等.
我一直认为某些类型是自然结构而不是类,但仍然可以有一些辅助函数作为成员.结构应该仍然是大多数通常规则的POD - 特别是使用memcpy复制必须是安全的.它必须公开所有成员数据.但是,将助手功能作为成员对我来说仍然有意义.我甚至不一定会反对私人方法,尽管我不记得曾经这样做过.虽然它打破了正常的POD规则,但我不反对具有构造函数的结构,只要它们只是初始化 - 少数字段构造函数(重写赋值或析构函数肯定会违反规则).
对我来说,结构直观地是字段的集合 - 数据结构节点或其他 - 而类是抽象.为字段集合提供辅助函数的逻辑位置可能在结构中.
我甚至认为我曾经沿着这些方向阅读过一些建议,尽管我不记得在哪里.
这是否违反公认的最佳做法?
编辑 - POD(普通旧数据)被这个问题误传.特别是,结构可以是非POD纯粹因为成员是非POD - 例如具有std :: string类型成员的聚合.不得使用memcpy复制该聚合.如果有困惑,请看这里.
在C++中声明结构有没有优势?为什么我不应该只创建一个只包含数据成员的类(即没有方法)?
谢谢,