草庐IT

safe-publication

全部标签

c++ - 我应该使用公共(public)变量还是私有(private)变量?

我是第一次做一个大型项目。我有很多类,其中一些具有公共(public)变量,一些具有带有setter和getter方法的私有(private)变量,并且具有两种类型。我决定重写这段代码,主要只使用一种类型。但我不知道我应该使用哪个(仅用于同一对象中的方法的变量始终是私有(private)的,不是这个问题的主题)。我知道公共(public)和私有(private)意味着什么理论,但在现实世界中使用的是什么,为什么? 最佳答案 private数据成员通常被认为是好的,因为它们提供了封装。为它们提供getter和setter会破坏这种封装

c++ - 在 C++ 中用私有(private)函数覆盖公共(public)虚函数

是否有任何理由使重写的C++虚函数的权限不同于基类?这样做有什么危险吗?例如:classbase{public:virtualintfoo(double)=0;}classchild:publicbase{private:virtualintfoo(double);}C++faq说这是一个坏主意,但没有说明原因。我在一些代码中看到了这个习语,我相信作者试图使这个类成为最终的,基于不可能覆盖私有(private)成员函数的假设。但是,Thisarticle显示了一个覆盖私有(private)函数的示例。当然anotherpartoftheC++faq建议不要这样做。我的具体问题:在派生类

c++ - 类变量 : public access read-only, 但私有(private)访问读/写

哎呀,暂时不在那个套接字库上工作。我正在尝试在C++方面对自己进行更多的教育。对于类,有没有办法使变量对公众只读,但在私有(private)访问时读+写?例如像这样:classmyClass{private:intx;//thiscouldbeanytype,hypotheticallypublic:voidf(){x=10;//thisisOK}}intmain(){myClasstemp;//Iwantthis,butwithprivate:it'snotallowedcout简而言之,我的问题是如何允许从f()内完全访问x但从其他任何地方进行只读访问,即intnewint=tem

c++ - 如何从基类公开继承,但在派生类中将基类的一些公共(public)方法设为私有(private)?

例如,Base类有两个公共(public)方法:foo()和bar()。Derived类继承自Base类。在Derived类中,我想将foo()设为公开,而将bar()设为私有(private)。以下代码是正确且自然的方法吗?classBase{public:voidfoo();voidbar();};classDerived:publicBase{private:voidbar();}; 最佳答案 C++'03标准的第11.3节描述了这种能力:11.3AccessdeclarationsTheaccessofamemberofab

go - Go 源代码中提到的 "safe point functions"是什么?

在文件runtime/proc.go中的Gosourcecode,有很多评论提到安全点函数,似乎与垃圾收集安全的时间点有关。但是,我找不到这些函数的任何定义。什么是安全点函数,它们的用途是什么,这些函数有哪些示例? 最佳答案 这是我能挖掘到的关于这个话题的所有内容。我发现了一些关于Go的GC安全点的讨论here.看起来安全点(在Go实现中使用)实际上与安全点的传统定义相同:keypointswheretheGCcantrackwhatallvariablesandregistershold同一线程上的另一个用户提到GCfoldsth

linux - 如何从 Bash 中对包含公共(public)前缀和后缀的字符串进行数字排序?

这是文件列表:some.string_100_with_numbers.in-it.txtsome.string_101_with_numbers.in-it.txtsome.string_102_with_numbers.in-it.txtsome.string_23_with_numbers.in-it.txtsome.string_24_with_numbers.in-it.txtsome.string_25_with_numbers.in-it.txt现在我想对它进行数字排序。以*23*开头,以*102*结尾。我已经尝试过-n和-g。-t对这些杂乱的字符串没有帮助。我可以忽略带

linux - 从 CRAN Ubuntu 存储库安装 R : No Public Key Error

我使用的是R版本2.13,并且想更新到较新的版本,以便使用一些依赖于R>=2.14的包。我的sources.list文件中有一行,如here所述。.然后我导航到终端并输入:sudoapt-getupdate尝试在离我最近的CRAN镜像上更新R时出现以下错误:Readingpackagelists...DoneW:GPGerror:http://lib.stat.cmu.eduoneiric/Release:Thefollowingsignaturescouldn'tbeverifiedbecausethepublickeyisnotavailable:NO_PUBKEY51716619

PHP 配置 : It is not safe to rely on the system's timezone settings

这个问题在这里已经有了答案:"date():Itisnotsafetorelyonthesystem'stimezonesettings..."(25个回答)关闭6年前.这是一个奇怪的。我刚刚升级到php5.3.0,升级后我收到以下警告:Warning:getdate()[function.getdate]:Itisnotsafetorelyonthesystem'stimezonesettings.Youarerequiredtousethedate.timezonesettingorthedate_default_timezone_set()function.Incaseyouus

java - 通过反射获取Java中类的公共(public)静态最终字段/属性的值

假设我有一个类:publicclassR{publicstaticfinalint_1st=0x334455;}如何通过反射获得“_1st”的值? 最佳答案 首先检索类的字段属性,然后您可以检索值。如果您知道类型,则可以使用具有null的get方法之一(仅对于静态字段,实际上对于静态字段,传递给get方法的参数将被完全忽略)。否则,您可以使用getType并编写适当的开关,如下所示:Fieldf=R.class.getField("_1st");Classt=f.getType();if(t==int.class){System.o

java - junit 和 java : testing non-public methods

这个问题在这里已经有了答案:HowdoItestaclassthathasprivatemethods,fieldsorinnerclasses?(58个回答)关闭4年前。JUnit只会测试我的类中那些公开的方法。我如何对那些不protected(即私有(private)的、protected)进行junit测试?我可以不使用junit来测试它们,但我想知道junit标准方法是什么。 最佳答案 关于单元测试的一个学派认为,您应该只能测试公共(public)方法,因为您应该只对公共(public)API进行单元测试,并且通过这样做,您