为啥 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来描述一个类类型呢?

【问题讨论】:

structclass The authors of that book describe why here "作为编程风格的问题,当我们定义一个打算使其所有成员都公开的类时,我们使用结构。如果我们打算拥有私有成员,那么我们使用类。” 据我所知但还没有真正检查过?请参阅类声明语法中对class-key 的描述。 据我所知,类和结构并不完全相同——它们是相同的。无论您在class 中可以做什么,您都可以在struct 中进行,反之亦然。 structclass 在 C++ 中的功能相同,唯一的例外是对成员和继承的默认访问是 private 用于 classpublic 用于struct. 【参考方案1】:

通常将POD types 定义为struct,将包含其他成员、构造函数、方法等的数据类型定义为class。它们基本相同,不同之处在于struct 中的成员默认为publicclass 中的默认成员为private

书中的用法与上面的描述一致。

【讨论】:

以上是关于为啥 c++ 入门书使用 struct 关键字来描述类? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

struct在C和C++中的使用总结

C++关键字struct

c++入门用啥书?

CC++中的 struct 关键字详解

将 C++ 类放入 C-struct 以供 C++ 函数使用(C/C++ 混合代码)

struct的两个名字是啥,为啥我不能把最下面的一个作为数据类型放在里面?