为啥 c++ 入门书使用 struct 关键字来描述类? [复制]
Posted
技术标签:
【中文标题】为啥 c++ 入门书使用 struct 关键字来描述类? [复制]【英文标题】:Why does the book c++ primer use the struct keyword to describe classes? [duplicate]为什么 c++ 入门书使用 struct 关键字来描述类? [复制] 【发布时间】:2021-07-22 20:53:48 【问题描述】:我对 C 结构有基本的了解,据我所知,类和结构并不完全相同,但 c++ 入门使用从 p 开始的 struct 关键字定义了一个“类”。 72-73。这是代码的一小段摘录:
"定义 Sales_data 类型
虽然我们还不能编写 Sales_item 类,但我们可以编写一个更具体的类来分组相同的数据元素。我们使用这个类的策略是用户将能够直接访问数据元素,并且必须自己实现所需的操作。因为我们的数据结构不支持任何操作,我们将我们的版本命名为 Sales_data 以区别于 Sales_item。我们将类定义如下:"
struct Sales_data
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
;
这本书被认为是C++11的权威概述,为什么他们会使用关键字struct而不是class来描述一个类类型呢?
【问题讨论】:
struct
是 class
。
The authors of that book describe why here "作为编程风格的问题,当我们定义一个打算使其所有成员都公开的类时,我们使用结构。如果我们打算拥有私有成员,那么我们使用类。”
据我所知但还没有真正检查过?请参阅类声明语法中对class-key
的描述。
据我所知,类和结构并不完全相同——它们是相同的。无论您在class
中可以做什么,您都可以在struct
中进行,反之亦然。
struct
和 class
在 C++ 中的功能相同,唯一的例外是对成员和继承的默认访问是 private
用于 class
和 public
用于struct
.
【参考方案1】:
通常将POD types 定义为struct
,将包含其他成员、构造函数、方法等的数据类型定义为class
。它们基本相同,不同之处在于struct
中的成员默认为public
,class
中的默认成员为private
。
书中的用法与上面的描述一致。
【讨论】:
以上是关于为啥 c++ 入门书使用 struct 关键字来描述类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章