草庐IT

publication

全部标签

c++ - 一个类(class)可以有两个公共(public)部分吗?如果是,那为什么?我们在什么情况下这样做?

有一些关于类(class)的问题困扰着我。例如classA{public:A(){..........}voidcleanup(){............}public:UINTa;ULONGb;};在上面的例子中有两个公共(public)部分。在第一节中,我定义了一个构造函数和一个方法,在第二节中,我声明了数据成员。是上述类,即正确。我们可以这样做吗?如果是,那么为什么需要它,我们应该在什么情况下使用它?既然我们可以在一个部分中完成整个事情,那么为什么会有两个部分呢? 最佳答案 访问限定符仅适用于下一个限定符之前的代码。此类限定

java - 公共(public)领域的替代品有哪些?

我正在用Java编写游戏,作为问题标题的建议,我在我的类(class)中使用公共(public)字段。(暂时)据我所见,公共(public)领域很糟糕,我对原因有所了解。(但如果有人能澄清为什么你不应该使用它们,那将不胜感激)问题是,从我所见,(这似乎合乎逻辑)是使用私有(private)字段,但使用getter和setter访问它们也不好,因为它破坏了首先使用私有(private)字段的意义地点。那么,我的问题是,有哪些替代方案?还是我真的必须使用带有getter和setter的私有(private)字段?这里是我的一个类和它的一些方法供引用。如果需要,我会详细说明。publicdo

c++ - std::enable_shared_from_this;公共(public)与私有(private)

我使用shared_ptr和enable_shared_from_this玩了一会儿,但遇到了一些我不太了解的东西。在我的第一次尝试中,我构建了这样的东西:classshared_test:std::enable_shared_from_this{public:voidprint(boolrecursive){if(recursive){shared_from_this()->print(false);}std::cout请注意,这个类正在私下扩展std::enable_shared_from_this。这显然有很大的不同,因为执行这样的事情:intmain(){autot(std::

c++ - 多级私有(private)和公共(public)继承 - 不寻常的访问

#includeusingnamespacestd;classuvw;classabc{private:intprivateMember;protected:intprotMember;public:intpublicMember;};classdef:privateabc{public:voiddummy_fn();};classuvw:publicdef{};voiddef::dummy_fn(){abcx;defy;uvwz;cout据我了解,在def之后从abc私下继承,protMember和publicMember在def中成为私有(private).所以,现在当uvw继承自

c++ - 用原语 union 公共(public)初始序列

我试图更好地理解一个关于union和通用初始序列规则的相当令人惊讶的发现。常见的初始序列规则说(class.mem23): Inastandard-layoutunionwithanactivememberofstructtypeT1,itispermittedtoreadanon-staticdatamembermofanotherunionmemberofstructtypeT2providedmispartofthecommoninitialsequenceofT1andT2;thebehaviorisasifthecorrespondingmemberofT1werenomin

c++ - 公共(public)访问声明不影响成员函数指针?

我对g++(5.1版)下的访问声明有疑问。classBase{public:voiddoStuff(){}};classDerived:privateBase{public://Usingolderaccessdeclaration(withoutusing)shootsawarning//andresultsinthesamecompilationerrorusingBase::doStuff;};templatevoidexec(C*c,Funcfunc){(c->*func)();}intmain(){Derivedd;//Untilhere,everythingcompiles

c++ - 私有(private) typedef 的公共(public)使用是否可移植?

classSettings{private:typedefstd::mapOptionMap;public:typedefOptionMap::iteratoriterator;typedefOptionMap::const_iteratorconst_iterator;...};此代码可移植吗?关于它的标准规定是什么? 最佳答案 这是合法的,并且Settings::iterator和Settings::const_iterator可供Settings类的所有用户访问。C++中的访问控制纯粹应用于名称。ISO/IEC14882:20

c++ - 跟踪 C++ lib 公共(public) API 更改

我目前正在开发基于C++Qt的大型项目,该项目即将对其公共(public)API进行重大重构,如果有一个工具可以生成有关已添加方法的报告,那就太好了或从构建中移除。我知道有一个用于Java的工具来执行此操作,我认为可能有一个用于.NET的工具,但经过一番搜索后,我无法找到任何用于C++的工具。是否存在。跨平台会很好,或者如果只在Linux中也可以。 最佳答案 如果您使用Doxygen或其他类似工具来记录您的API,那么您可以diff目录。无论如何,这是你应该做的事情。(您也可以告诉Doxygen查找未记录的函数。)您可以轻松地将其应

C++从公共(public)静态方法访问私有(private)静态成员?

这个问题在这里已经有了答案:Whatisanundefinedreference/unresolvedexternalsymbolerrorandhowdoIfixit?(38个回答)关闭9年前。假设我有一个.hpp文件,其中包含一个带有公共(public)静态方法和私有(private)静态成员/变量的简单类。这是一个示例类:classMyClass{public:staticintDoSomethingWithTheVar(){TheVar=10;returnTheVar;}private:staticintTheVar;}当我打电话时:intResult=MyClass::DoS

c++ - 使用继承的类模板避免公共(public)成员不可见和源代码膨胀/重复的更好方法?

语境:protected和public类成员的继承是面向对象编程的一个基本概念。下面的小例子说明了一个经常遇到的情况,其中类CDerived继承类的所有公共(public)成员CBase并添加了1个自己的附加功能没有更改或明确重新声明或重新定义CBase的任何公共(public)成员类(class)。#includeclassCBase{public:charArr[32];intFn1(void){returnArr[1]^Arr[sizeof(Arr)-1];}intFn2(void){returnArr[2]^Arr[sizeof(Arr)-2];}};classCDerived