草庐IT

setPrimitive-setter

全部标签

c++ - 使用 getter/setter vs "tell, don' t 问“?

告诉,不问原则here当我使用getter或setter时,通常会粘贴到我身上,人们告诉我不要使用它们。该网站清楚地解释了我应该做什么和不应该做什么,但它并没有真正解释为什么我应该告诉而不是询问。我发现使用getter和setter效率更高,而且我可以用它们做更多事情。想象一个具有health和armor属性的类Warrior:classWarrior{unsignedintm_health;unsignedintm_armor;};现在有人用特殊攻击攻击我的战士,降低他的护甲5秒。使用setter会是这样的:voidAttacker::attack(Warrior*target){t

java - getter 和 setter 会影响 C++/D/Java 中的性能吗?

这是一个相当古老的话题:setter和getter是好是坏?我的问题是:编译器在C++/D/Java内联getter和setter?与直接字段访问相比,getter/setter对性能(函数调用、堆栈帧)的影响程度。除了使用它们的所有其他原因之外,我想知道它们是否会影响性能,除了是一种良好的OOP实践。 最佳答案 这取决于。没有永远正确的通用答案。在Java中,JIT编译器可能会迟早内联它。据我所知,JVMJIT编译器只优化大量使用的代码,因此您最初可以看到函数调用开销,直到getter/setter被足够频繁地调用。在C++中,它

java - 封装——当 setter 已经公开时,为什么我们需要它?

这个问题在这里已经有了答案:Whyaregetterandsettermethodimportantinjava?[duplicate](6个回答)关闭7年前。封装是隐藏数据。我想在这里听到一些非常有趣的答案。当我们已经为变量声明了publicsetter方法时,保持变量为private的意义何在?我了解封装的用法,但是当我们将setter设为公共(public)时,将变量保留为private的意义何在,我们可以直接使用public访问修饰符.是因为我们不想让其他人知道我们在后端存储数据或管理数据的确切方式吗? 最佳答案 Isitb

c++ - 为什么在 Herb Sutter 的 CppCon 2014 演讲中不推荐使用值(value) setter 成员函数(回到基础 : Modern C++ Style)?

在HerbSutter的CppCon2014演讲中回归基础:现代C++风格,他在幻灯片28(awebcopyoftheslidesarehere)中提到了这种模式:classemployee{std::stringname_;public:voidset_name(std::stringname)noexcept{name_=std::move(name);}};他说这是有问题的,因为当使用临时调用set_name()时,noexcept-ness并不强(他使用短语“noexcept-ish”)。现在,我在我自己最近的C++代码中大量使用了上述模式,主要是因为它可以让我每次都输入两个s

c++ - C++11 中的所有/大多数 setter 函数是否应该编写为接受通用引用的函数模板?

考虑一个具有N成员变量的类X,每个都有一些可复制和可move类型,并且N对应的setter函数。在C++98中,X的定义可能如下所示:classX{public:voidset_a(Aconst&a){_a=a;}voidset_b(Bconst&b){_b=b;}...private:A_a;B_b;...};上述X类的Setter函数可以绑定(bind)到左值和右值参数。根据实际参数,这可能会导致创建一个临时的并且将最终导致一个复制分配;因此,此设计不支持不可复制类型。在C++11中,我们拥有move语义、完美转发和通用引用(ScottMeyers的术语),通过以这种方式重写set

c# - Getter、setter 和属性最佳实践。 Java 与 C#

我现在正在学习C#类(class),我正在尝试找出最好的做事方式。我来自Java背景,所以我只熟悉Java最佳实践;我是C#新手!在Java中,如果我有私有(private)属性,我会这样做;privateStringname;publicvoidsetName(Stringname){this.name=name;}publicStringgetName(){returnthis.name;}在C#中,我发现有很多方法可以做到这一点。我可以像Java一样做:privatestringname;publicvoidsetName(stringname){this.name=name;}

java - getter 和 setter 是如何工作的?

我来自php世界。您能否解释一下什么是getter和setter,并给您一些例子? 最佳答案 教程并不是真正需要的。阅读encapsulationprivateStringmyField;//"private"meansaccesstothisisrestrictedtotheclass.publicStringgetMyField(){//includevalidation,logic,loggingorwhateveryoulikeherereturnthis.myField;}publicvoidsetMyField(Stri

java - 简单的 Getter/Setter 注释

您使用什么约定来评论getter和setter?这是我很长一段时间以来一直想知道的事情,例如:/***(1a)whatdoyouputhere?*@paramsalary(1b)whatdoyouputhere?*/publicvoidsetSalary(floatsalary);/**(2a)whatdoyouputhere?*@return(2b)*/publicfloatgetSalary();我总是发现我在为1a/b和2a/b写几乎完全相同的东西,比如1a)设置员工的薪水,1b)员工的薪水。这似乎是多余的。现在我可以看到对于更复杂的内容,您可能会在(a)部分中写更多内容,以提供

C++ getter/setter 编码风格

我用C#编程已经有一段时间了,现在我想复习一下我的C++技能。上课:classFoo{conststd::string&name_;...};最好的方法是什么(我只想允许读取name_字段):使用getter方法:inlineconststd::string&name()const{returnname_;}公开该字段,因为它是一个常量谢谢。 最佳答案 对于长期存在的类来说,使用getter方法是更好的设计选择,因为它允许您在将来用更复杂的方法替换getter方法。尽管对于const值似乎不太可能需要此操作,但成本低且可能带来的好处

c++ - 公共(public)数据成员与 Getters、Setters

我目前正在使用Qt和C++。我有具有私有(private)数据成员和公共(public)成员函数的类。我为类中可用的数据成员提供了公共(public)getter和setter。现在我的问题是,如果我们的类中有数据成员的getter和setter,那么将这些数据成员设为私有(private)有什么意义?我同意在Base类中使用私有(private)数据成员听起来合乎逻辑.但除此之外,拥有私有(private)成员以及它们的getter和setter对我来说似乎不合逻辑。或者我们可以将所有变量都设为公开,这样就完全不需要getter和setter了吗?拥有这些是一个好习惯吗?我知道拥有私