C++ typedef struct vs class

 宛雨万青惠雯 发布于 2023-01-31 15:27

我对C++并不是很熟悉,当我尝试一些测试程序时,我想到了一个关于最好的问题,如果我可以这样说,在C++代码中定义一些原始元素.

我们来看一个描述矩形的类.它会创建它们,绘制它们,旋转它们,调整大小等等...现在在大多数情况下我们必须处理画布上的点.其自身的矩形由2个点描述:左上角和右下角.另外,为了旋转它,您需要一个角度和一个点(锚点).或者可能要移动它,您需要一个给定矩形的新锚点.我想我已经说明了使用积分.那么什么更有效?将此原始定义为类还是结构?

class cPoint
{
public: 
 int X;
 int Y;
};

要么

typedef struct
{
 int X;
 int Y;
}sPoint;

John Dibling.. 14

Niether效率更高.在技​​术层面上,除了成员(in ,in )和默认继承模型(in ,in )的默认可见性之外,a class和a 之间没有区别.structpublicstructprivateclasspublicstructprivateclass

他们的typedef struct {} name模型在C++中不是惯用的.事实上,这是一种憎恶 - 来自C的延续.不要使用这种模式.请struct name {};改用它.使用该typedef struct {} name;模型并没有在C++中获得任何东西(在C中需要它),并且在可维护性方面可能会花费你很多东西.例如,它可能是更难greptypedef struct声明.但是,由于它没有通过这样做获得任何东西,所以没有令人信服的理由不能简单地struct name {};用C++ 做.

除了技术问题,之间的差异struct,并class语义的.它是传统的,并且预期声明为structs的对象是仅由public:数据成员(所谓的POD)组成的简单对象.如果它有private或者protected数据,预期是派生自或有任何方法,则声明为a class.

本指南可以解释,只是 - 指南.例如,没有什么可以阻止您将抽象基类声明struct为.但是,您可能需要考虑遵循此指南,以遵循最低惊喜原则,使您的代码更易于理解和维护.

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有