Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
访问C+中的属性+;通过getters setters 我有java背景,目前正在学习C++。在Java中,不建议直接访问实例属性,实例属性是私有的,通过getters setter进行访问。在C++中创建类似JavaBean的东西是否明智?或者这不是C++语言中常见的东西吗?如果不是,为什么不建议在C++中创建吸收器设置器来访问实例属性?< /p> < p>使用GETSt/Stter是任何面向对象驱动语言的好建议,所以,应该通过正确暴露的方法保护内部数据成员。 一个很好的C++语言的副产品是那些GETS/SETTER可能会被内联,这意味着它和访问成员一样快,只会更安全。 < P> GETS/SETTER是面向对象编程的一部分。由于C++缺少属性(这是获得GETS/SETTER的唯一方法),所以在C++中没有其他方法可以获得该功能。_Java_C++ - Fatal编程技术网

访问C+中的属性+;通过getters setters 我有java背景,目前正在学习C++。在Java中,不建议直接访问实例属性,实例属性是私有的,通过getters setter进行访问。在C++中创建类似JavaBean的东西是否明智?或者这不是C++语言中常见的东西吗?如果不是,为什么不建议在C++中创建吸收器设置器来访问实例属性?< /p> < p>使用GETSt/Stter是任何面向对象驱动语言的好建议,所以,应该通过正确暴露的方法保护内部数据成员。 一个很好的C++语言的副产品是那些GETS/SETTER可能会被内联,这意味着它和访问成员一样快,只会更安全。 < P> GETS/SETTER是面向对象编程的一部分。由于C++缺少属性(这是获得GETS/SETTER的唯一方法),所以在C++中没有其他方法可以获得该功能。

访问C+中的属性+;通过getters setters 我有java背景,目前正在学习C++。在Java中,不建议直接访问实例属性,实例属性是私有的,通过getters setter进行访问。在C++中创建类似JavaBean的东西是否明智?或者这不是C++语言中常见的东西吗?如果不是,为什么不建议在C++中创建吸收器设置器来访问实例属性?< /p> < p>使用GETSt/Stter是任何面向对象驱动语言的好建议,所以,应该通过正确暴露的方法保护内部数据成员。 一个很好的C++语言的副产品是那些GETS/SETTER可能会被内联,这意味着它和访问成员一样快,只会更安全。 < P> GETS/SETTER是面向对象编程的一部分。由于C++缺少属性(这是获得GETS/SETTER的唯一方法),所以在C++中没有其他方法可以获得该功能。,java,c++,Java,C++,所以去做吧。不要“默认”创建getter和setter。创建封装功能、思想、算法等的类。不要让类仅仅是一堆字段,或者如果你这样做了,只需将它们声明为structs,并承认它们就是这样的:一堆相关的数据绑定在一起,没有任何封装(在许多情况下这很好) 每一条规则都有例外,因此最终会有一些getter和setter,但在大多数应用程序中,每个类都有一个或两个以上的getter和setter是没有用的(非常粗略的猜测) 编辑注意:这只是我的意见,我还没有看到您的特定代码。也许你需要成百上千的能手和能手。

所以去做吧。

不要“默认”创建getter和setter。创建封装功能、思想、算法等的类。不要让类仅仅是一堆字段,或者如果你这样做了,只需将它们声明为
struct
s,并承认它们就是这样的:一堆相关的数据绑定在一起,没有任何封装(在许多情况下这很好)

每一条规则都有例外,因此最终会有一些getter和setter,但在大多数应用程序中,每个类都有一个或两个以上的getter和setter是没有用的(非常粗略的猜测)


编辑注意:这只是我的意见,我还没有看到您的特定代码。也许你需要成百上千的能手和能手。我只是碰巧对此表示怀疑。我希望落选的选民能给出一些有道理的评论。

这实际上是一个一般的OO设计问题,而不是语言问题。就个人而言,我遵循“如果你有很多获得者和变异者,那么你的课堂设计就有缺陷”的思想流派。类的公共接口是行为,而不是其内部结构或此类结构的某些模型。当然,这只是一种观点,完全是语言不可知论


C++所反对的一件事是“定位器”。由于构造函数运行后,良好的C++类是完全有效的(参见“范围绑定的资源管理”),任何类型的后期构造“设置”都违背了C++语言的最佳实践。这是我在C#中真正错过的少数几件事之一。你可以在C++@AbiusX上使用Qt方法来获取/设置器:你能描述一下你觉得这种方法的特点吗?作为获取器的名称和作为设置器的set+名称:例如x()和setX()啊,这很有意义。至少少一点陈词滥调。我不同意它“更安全”——我会说它更适合未来。你可以不同意,但访问器方法会更安全。您可以使用getter返回const引用或副本,或者将setter设置为私有以防止外部更改,但最终您将“保护”您的成员变量,使其不会被使用该类的任何对象所损坏。如果您没有为每个getter编写setter,我会这样做(我认为这样做是最好的)。但在我看来,你所说的“接受者/接受者”似乎意味着他们倾向于成对出现。如果你的答案只是说“getters”,我更倾向于同意它(尽管它与我的特定答案相反)。Python是一种OO语言,但不建议在Python类中创建getters setter。呃,它作为修饰访问器内置在语言中,这是否意味着您必须拥有多个构造函数,这取决于您希望传递给构造函数的属性?是的,如果有多种方法来构造对象,您可能需要多个构造函数。其思想是构造器将对象完全构造为有效状态,而不是事后进行调整。如果您只是收集一组数据,那么可以使用结构而不是类。