草庐IT

getter-setter

全部标签

c++ - 直接访问成员或始终使用 getter

当一个类使用getter访问它自己的成员数据时,我个人觉得这很奇怪/丑陋。我知道对性能没有影响,但我只是不喜欢看到所有这些方法调用。是否有任何强烈的论据,或者它只是个人偏好的事情之一,应该留给每个编码人员,或者在编码标准中任意控制?更新:我的意思是简单的getter,专门针对类的非公共(public)成员。 最佳答案 您可能想要使用getter/setter的原因是它隐藏了实现。如果您使用getter/setter以防实现发生更改,则无需重写所有代码,因为这些成员可以继续工作。根据许多聪明的评论进行编辑:至于使用setter和get

c++ - 直接访问成员或始终使用 getter

当一个类使用getter访问它自己的成员数据时,我个人觉得这很奇怪/丑陋。我知道对性能没有影响,但我只是不喜欢看到所有这些方法调用。是否有任何强烈的论据,或者它只是个人偏好的事情之一,应该留给每个编码人员,或者在编码标准中任意控制?更新:我的意思是简单的getter,专门针对类的非公共(public)成员。 最佳答案 您可能想要使用getter/setter的原因是它隐藏了实现。如果您使用getter/setter以防实现发生更改,则无需重写所有代码,因为这些成员可以继续工作。根据许多聪明的评论进行编辑:至于使用setter和get

setter/getter 中的 C++ const

我仍在学习C++,而且我到处都在阅读我必须使用const的所有地方(我认为是出于速度原因)。我通常这样写我的getter方法:constboolisReady(){returnready;}但我已经看到一些IDE以这种方式自动生成getter:boolgetReady()const{returnready;}但是,在编写委托(delegate)时,如果const在函数之后,我碰巧发现了这个错误:memberfunction'isReady'notviable:'this'argumenthastype'constVideoReader',butfunctionisnotmarkedco

setter/getter 中的 C++ const

我仍在学习C++,而且我到处都在阅读我必须使用const的所有地方(我认为是出于速度原因)。我通常这样写我的getter方法:constboolisReady(){returnready;}但我已经看到一些IDE以这种方式自动生成getter:boolgetReady()const{returnready;}但是,在编写委托(delegate)时,如果const在函数之后,我碰巧发现了这个错误:memberfunction'isReady'notviable:'this'argumenthastype'constVideoReader',butfunctionisnotmarkedco

c++ - 如果 C++ 中不存在 getter 和 setter,有没有办法自动生成它们?

我有使用Objective-C的经验,在Objective-C中,您可以让编译器为您生成getter和setter(如果它们尚不存在)(@synthesize)。有没有办法在C++中做到这一点,还是我需要自己实现所有的getter和setter? 最佳答案 TheC++CoreGuidelinesadviseagainstusingtrivialgettersandsetters因为它们是不必要的,asymptomofbadobject-orienteddesign.因此,C++没有用于自动生成getter和setter的内置功能(

c++ - 如果 C++ 中不存在 getter 和 setter,有没有办法自动生成它们?

我有使用Objective-C的经验,在Objective-C中,您可以让编译器为您生成getter和setter(如果它们尚不存在)(@synthesize)。有没有办法在C++中做到这一点,还是我需要自己实现所有的getter和setter? 最佳答案 TheC++CoreGuidelinesadviseagainstusingtrivialgettersandsetters因为它们是不必要的,asymptomofbadobject-orienteddesign.因此,C++没有用于自动生成getter和setter的内置功能(

c++ - 我应该总是继续使用 `sink` 构造函数或 setter 参数吗?

structTestConstRef{std::stringstr;Test(conststd::string&mStr):str{mStr}{}};structTestMove{std::stringstr;Test(std::stringmStr):str{std::move(mStr)}{}};看了GoingNative2013之后,我明白sink参数应该始终按值传递并使用std::movemove。TestMove::ctor是应用这个成语的正确方法吗?TestConstRef::ctor是否有更好/更高效的情况?那么琐碎的二传手呢?我应该使用以下成语还是传递conststd:

c++ - 我应该总是继续使用 `sink` 构造函数或 setter 参数吗?

structTestConstRef{std::stringstr;Test(conststd::string&mStr):str{mStr}{}};structTestMove{std::stringstr;Test(std::stringmStr):str{std::move(mStr)}{}};看了GoingNative2013之后,我明白sink参数应该始终按值传递并使用std::movemove。TestMove::ctor是应用这个成语的正确方法吗?TestConstRef::ctor是否有更好/更高效的情况?那么琐碎的二传手呢?我应该使用以下成语还是传递conststd:

javascript - 在对象上定义 getter,以便所有未定义的属性查找返回 ""

基本上我需要能够做到这一点:varobj={"foo":"bar"},arr=[];with(obj){arr.push(foo);arr.push(notDefinedOnObj);//failswith'ReferenceError:notDefinedOnObjisnotdefined'}console.log(arr);//["bar",""]我正在寻找{}.__defineGetter__的“全局”等价物或{get}为了为所有未定义的属性getter返回一个空字符串(请注意,这与undefined的属性不同)。 最佳答案

javascript - 在对象上定义 getter,以便所有未定义的属性查找返回 ""

基本上我需要能够做到这一点:varobj={"foo":"bar"},arr=[];with(obj){arr.push(foo);arr.push(notDefinedOnObj);//failswith'ReferenceError:notDefinedOnObjisnotdefined'}console.log(arr);//["bar",""]我正在寻找{}.__defineGetter__的“全局”等价物或{get}为了为所有未定义的属性getter返回一个空字符串(请注意,这与undefined的属性不同)。 最佳答案