草庐IT

c++ - 通过引用返回或创建一个典型的 setter/getter?

这个问题在这里已经有了答案:Getterandsetter,pointersorreferences,andgoodsyntaxtouseinc++?(8个答案)关闭9年前。我想知道C++中的良好实践,我正面临为类成员制作getter/setter的问题。那么,为什么不简单地通过引用返回成员,这样我就可以修改或访问它的值来读取它?具体来说,这是我的代码:classChest:publicGameObject{public:Chest();~Chest();staticint&num_chests();private:staticintnum_chests_;};这是一种不好的做法吗?我

c++ - 什么是更好的做法? protected / setter/getter ?

如果我有一个继承自另一个的类,并且只有这个类必须使用某个变量,哪种做法更好?要在基类中说变量是“protected”,还是让它私有(private)并给它一个protectedgetter?我听说过相互矛盾的事情。我的老师告诉我要始终使用getter,而其他人告诉我,在任何级别使用getter都会暴露糟糕的程序设计。真正的答案是什么?我觉得两者都是不合逻辑的极端。此外,如果getter和setter是糟糕的程序设计,这是为什么呢?是否有任何资源可以教我更多有关如何构建代码的信息? 最佳答案 除了读取值之外,您是否需要(或预计您将来需

kotlin - 来自类型参数的属性的自定义 getter

我有一个有点像这样的Java文件:publicclassThing{privateStringproperty;publicThing(Stringproperty){this.property=property;}publicStringgetProperty(){if(property==null){return"blahblahblah";}else{returnproperty;}}}显然我的实际类(class)还有更多内容,但以上只是一个示例。我想用Kotlin写这个,所以我从这个开始:classThing(valproperty:String?)然后我尝试使用theoffi

kotlin - 来自类型参数的属性的自定义 getter

我有一个有点像这样的Java文件:publicclassThing{privateStringproperty;publicThing(Stringproperty){this.property=property;}publicStringgetProperty(){if(property==null){return"blahblahblah";}else{returnproperty;}}}显然我的实际类(class)还有更多内容,但以上只是一个示例。我想用Kotlin写这个,所以我从这个开始:classThing(valproperty:String?)然后我尝试使用theoffi

c++ - 在头文件中实现 getter 和 setter

关闭。这个问题是opinion-based.它目前不接受答案。想要改进这个问题?更新问题,以便editingthispost可以用事实和引用来回答它.关闭8年前。Improvethisquestion我有一个简单的问题,像这样在头文件中实现getter和setter是一种好习惯吗?classWebsocketSession:publicboost::enable_shared_from_this{public:WebsocketSession(boost::asio::io_service&io_service,WebsocketServer&server);tcp::socket&g

c++ - 我可以使用 const 引用而不是 getter 函数吗?

我只是想知道如果我只允许一个const引用变量,我是否可以绕过使用getter,如下所示#includeclasscTest{private:intm_i;std::stringm_str;public:constint&i;conststd::string&str;cTest(void):i(m_i),str(m_str){}};intmain(intargc,char*argv[]){cTesto;inti=o.i;//workso.i+=5;//failso.str.clear();//failsreturn0;}我想知道为什么人们似乎根本不这样做。我缺少一些严重的缺点吗?请贡献

Java 互操作 : Apply @JvmName to getters of properties in interface or abstract class

通常我们可以在kotlin中编写如下代码:valhasValue:Boolean@JvmName("hasValue")get()=true这将为Javainterop生成方法hasValue()而不是getHasValue()。但是,在界面中,这给了我一个编译错误:valhasValue:Boolean@JvmName("hasValue")get抽象类中的以下声明也是如此:abstractvalhasValue:Boolean@JvmName("hasValue")get所以这是我的问题:如何告诉kotlin编译器使用hasValue()而不是getHasValue()来获取a中属

Java 互操作 : Apply @JvmName to getters of properties in interface or abstract class

通常我们可以在kotlin中编写如下代码:valhasValue:Boolean@JvmName("hasValue")get()=true这将为Javainterop生成方法hasValue()而不是getHasValue()。但是,在界面中,这给了我一个编译错误:valhasValue:Boolean@JvmName("hasValue")get抽象类中的以下声明也是如此:abstractvalhasValue:Boolean@JvmName("hasValue")get所以这是我的问题:如何告诉kotlin编译器使用hasValue()而不是getHasValue()来获取a中属

c++ - getter 函数是否需要互斥体?

我有一个从多个线程访问的类。它的getter和setter函数都由锁保护。真的需要getter函数的锁吗?如果是,为什么?classfoo{public:voidsetCount(intcount){boost::lock_guardlg(mutex_);count_=count;}intcount(){boost::lock_guardlg(mutex_);//mutexneeded?returncount_;}private:boost::mutexmutex_;intcount_;}; 最佳答案 唯一可以绕过锁的方法是让自己相

Kotlin 只读属性,带和不带 getter

这些是等价的吗?valfoo=someFooReturningFunction()valfooget()=someFooReturningFunction()按照我理解文档的方式,它们是,但在我自己的测试中它们不是。使用get()someFooReturningFunction()会在每次访问属性时进行评估,而不是仅评估一次。 最佳答案 它们不等价。自定义getter确实会在每个属性访问时评估,类似于普通函数,而没有自定义访问器的val属性仅在初始化时评估一次(实际上存储在finalJVM平台上的字段)。这里至少还有一些不同之处:控