在旧时代,换句话说,当谈到C age时,struct没有构造函数,析构函数等。但是,现在(C ++时代),struct已经扩展得更像类了。
那么,C ++设计者的目的是什么?
详细地说,为什么在与c相比时将构造函数,析构函数,继承,成员函数添加到struct中?
C/C++ Struct vs Class这不是一个重复的问题,因为这里的主要观点是设计目的,而不是结构和类之间的区别。
它也不与Why do both struct and class exist in C++?重复,我没有看到在上述问题下扩展struct的目的。
答案 0 :(得分:9)
让我们探讨其他可能的设计方案,由juanchopanza在评论中列举。
删除
struct
这种选择的一个优点是可以减少这种问题的混淆和不存在。
缺点是与C的显着不兼容性,我认为与C的兼容性仍然是C ++的设计目标之一。
不要介绍
class
。
我认为这只是引用了new关键字。请参阅评论以获得另一种解释。
同样的事情也有两个名称引起的混淆。
缺点是与common object oriented terminology不匹配。
make
中的含义相同struct
与C
Stoustrup引自:http://www.drdobbs.com/c-theory-and-practice/184403384
最初引自:Bjarne Stroustrup。 C ++的设计与演变(Addison-Wesley,1994)。
也许我们可以使用两套规则,但是单个概念可以提供更平滑的功能集成和更简单的实现。我确信,如果struct对用户和类来说意味着“C和兼容性”意味着“C ++和高级功能”,那么社区将陷入两个不同的阵营,很快就会停止通信...只有一个概念会支持我的从“传统的C风格编程”到数据抽象,再到面向对象编程的平滑过渡的想法。只有一个概念会支持“你只为你使用的东西买单”的理念。
他后来补充说:
我认为保持struct和class相同概念的想法使我们免于支持我们现在拥有的昂贵,多样化和相当不同的功能集的类。换句话说,“一个结构是一个类”的概念已经阻止了C ++逐渐变成一个具有断开的低级子集的高级语言。“