草庐IT

publication

全部标签

c++ - 为什么在 C++ 中在公共(public)成员之下定义私有(private)成员?

在C++中,有时在类定义中,首先声明公共(public)成员,然后声明私有(private)成员。但是变量或数据成员通常是私有(private)的并由公共(public)方法使用。因此,在这种情况下,使用了变量,但还没有声明。因此代码变得难以理解。但后来我找到了著名的程序员、网站或书籍来声明私有(private)成员。有人知道是什么原因吗? 最佳答案 我这样做是因为我类(class)的用户不关心私有(private)成员,他们对公共(public)API感兴趣(即如何使用我的类(class))。另外,在头文件中,我通常只是声明成员函

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

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

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进行单元测试,并且通过这样做,您

java - Java 修饰符(abstract、final、public、static 等)的合理顺序是什么?

Java修饰符的合理顺序是什么?摘要最终原生私有(private)的protected公开静态strictfp同步transient易变更新我已将措辞从推荐更改为合理,以平息是否推荐订单的讨论。 最佳答案 JavaLanguageSpecification中提到了修饰符的习惯使用顺序。(而不是Java虚拟机规范)例如对于classmodifiers你会发现以下定义(摘录):ClassModifiers:ClassModifierClassModifiersClassModifierClassModifier:oneofAnnotat