相关疑难解决方法(0)

带有成员函数的C++结构与具有公共变量的类

这实际上是良好形式/最佳实践的问题.我在C++中使用结构来形成基本上保存数据的对象,而不是创建一个具有大量访问器方法的类,这些方法除了获取/设置值之外什么都不做.例如:

struct Person {
    std::string name;
    DateObject dob;
    (...)
};
Run Code Online (Sandbox Code Playgroud)

如果你想象那里有20个变量,把它写成一个有私人成员和40多个访问者的类是很难管理的,对我来说似乎很浪费.

有时候,我可能还需要为数据添加某种最小功能.在示例中,假设我有时也需要基于dob的年龄:

struct Person {
    std::string name;
    DateObject dob;
    (...)
    int age() {return calculated age from dob;}
}
Run Code Online (Sandbox Code Playgroud)

当然,对于任何复杂的功能,我都会创建一个类,但对于像这样的简单功能,这是"糟糕的设计"吗?如果我使用一个类,将数据变量保存为公共类成员是不好的形式,还是只需要接受它并使用一堆访问器方法创建类?我理解类和结构之间的差异,我只是询问最佳实践.

c++ struct class

26
推荐指数
2
解决办法
5万
查看次数

C++中struct/class的历史是什么?

我正在上C++中的面向对象编程课程.在最近的一项任务中,我定义了一个成员函数struct.我的讲师解释说,尽管在结构体中使用成员函数是可编辑的,但他希望我们没有,为了向后兼容C,并且(特别是在这个初学者类中)实践良好的数据封装 - 我们应该使用a struct类型主要包含数据,以及class适用于更多程序封装的应用程序.他表示这种做法来自于C++中结构/类的历史,这是我想要了解的更多内容.

我知道除了默认的成员/继承访问之外,结构在功能上与类相同.我的问题是:

为什么结构和类包含在C++中?从我在C#中的背景,结构和类有重要区别,似乎struct在C++中只是用于定义具有默认public-ness的类的语法糖.是吗?

不是在寻找关于何时/为什么应该使用而不是使用其他人的意见 -在这些结构之后我出生得很好,而且我正在寻找它们的历史.他们在一起构思了吗?如果是这样,为什么?如果没有,哪个是第一个,为什么第二个被添加?我意识到在这个社区中有许多古老的长者可能对这些特征的起源有所记忆,并且标准出版物的链接或代码的例子,其中一个或另一个首次出现,将增加答案的帮助.

请注意,这个问题不是:

c++ standards struct class

15
推荐指数
1
解决办法
1192
查看次数

标签 统计

c++ ×2

class ×2

struct ×2

standards ×1