草庐IT

lldb_private

全部标签

java - 私有(private)方法的动态绑定(bind) : Java vs. C++

这在Java中是不允许的:classA{publicvoidmethod(){}}classBextendsA{privatevoidmethod(){}}它会产生一个编译错误:error:method()inBcannotoverridemethod()inAattemptingtoassignweakeraccessprivileges;waspublic然而,这在C++中是允许的:classA{public:virtualvoidmethod(){}};classB:publicA{private:voidmethod(){}};intmain(void){A*obj=newB(

c++ - 类定义中的多个 public/private 关键字

我在类定义中看到了多个public和private关键字,如下例所示:classmyClass{public:voidfunc1(){}public:voidfunc2(){}private:intx;inty;private:intz;intbaz;};这个(如果有的话)的实际用途是什么?是否存在这可能有用的任何情况? 最佳答案 Isthereanysituationinwhichthiscouldbeuseful?我能想到一种情况,否则会很成问题:classmyClass{public:voidfunc1(){}public:v

c++ - 是否可以通过在单元测试中定义我自己的 PRIVATE 宏来公开私有(private)成员?

我确实需要测试C++类的私有(private)成员方法。因为它是私有(private)方法并且我不想将它更改为protected,所以我不能通过创建子类并添加using声明来使其公开。所以如果我定义一个宏PRIVATE来替换private关键字。这是解决这个问题的好方法吗?#if__UNITTEST__#definePRIVATEpublic#else#definePRIVATEprivate#endifclassA{PRIVATE:voidf();}; 最佳答案 使用宏来改变C++关键字的含义是一个极其糟糕的主意。它不仅会使您的读

c++ - 本地定义类中的私有(private)范围

这是一个演示我的问题的小例子:classFoo{private:intx;voidy(){classBar{public:Bar(Foo*foo){foo->x=3;}};Barbar(this);}};类Foo,在其成员函数y中定义的类试图访问其私有(private)成员x。这是允许的吗?VisualStudio2013可以编译它,但IntelliSense似乎认为私有(private)成员无法访问,并且在嵌入类方法中键入foo->时不会列出它们。 最佳答案 代码有效。N4140[class.access]/2:Amemberof

c++ - 使用私有(private)构造函数进行静态初始化

在一个类中,我有一个静态成员代表该类的单例实例:classA{public:staticconststd::shared_ptrINSTANCE;private:A();};为了防止更多实例,我将构造函数设为私有(private)。现在我无法初始化静态变量,因为初始化程序无法访问私有(private)成员。这是我在.cpp文件中使用的代码:conststd::shared_ptrA::INSTANCE=std::make_shared();工厂方法也无济于事,因为它也必须是公开的。我还能做些什么来完成这项工作?注意:如果可能,我想避免使用典型的staticget()方法。

c++ - 用私有(private)基函数覆盖公共(public)虚函数?

让我们考虑具有以下接口(interface)的两个类A和B:classA{public:virtualvoidstart(){}//defaultimplementationdoesnothing};classB{public:voidstart(){/*dosomestuff*/}};然后是从两者继承的第三个类,A是公开的,因为它实现了这个“接口(interface)”,B是私有(private)的,因为那是实现细节。但是,在这个特定的实现中,start()只需要包含对B::start()的调用。所以我想我可以使用快捷方式并执行以下操作:classC:publicA,privateB

c++ - 成为私有(private)成员(C++ 类)意味着什么?

我对C++类中的私有(private)数据成员有点困惑。我是编码新手,仍处于“类(class)”一章的中间,所以我可能会超前,但我觉得我缺少一条信息:假设我有这段代码:classclocktype;{public:voidsetTime(int,int,int);...private:inthr;intmin;intsec;};然后我创建了一个对象myclock。clocktypemyclock;myclock::setTime(hour,minute,min){if(0我的教科书说我不能这样做:myclock.hr=5;因为hr是私有(private)数据成员,对象myclock只能

c++ - 在 C++ 中,我可以在其范围之外定义一个指向私有(private)类成员的指针吗?

考虑:classC{private:classT{inta,b;};};C::T*p;正如预期的那样,这会产生一个编译错误,指出C::T在第6行的上下文中是私有(private)的。现在将其更改为指向成员的指针:classC{private:classT{inta,b;};};intC::T::*p;这一次,gcc3.2.3版仍然发出同样的提示,但gcc3.4.3版让它通过了。根据标准,哪种行为是正确的? 最佳答案 由于T除了类C本身之外的任何地方都是不可见的,我无法想象它会被允许。在Comau上试过这个,他告诉我同样的事情。可悲的

c++ - 从抽象(纯虚拟)类私有(private)继承是否有意义?

假设这个结构structInterfaceForFoo{virtualvoidGetItDone()=0;};classAPoliticallyCorrectImplementationOfFooRelatedThings:privateInterfaceForFoo{public:voidGetItDone(){/*dothethingalready*/};};现在,我想知道以这种方式从接口(interface)私有(private)继承是否有任何有用的场景。 最佳答案 哈,这里的每个人都说“不”。我说“是的,它确实有意义。”cl

c++ - 具有混合继承修饰符的菱形继承(钻石问题)( protected /私有(private)/公共(public))

假设我们有类A、B、C、D,其中A是基础,B、C是介于两者之间,D是在菱形模型中派生的。注意:classB在private模式下继承virtualyclassA,C类在保护模式下继承虚拟A类。classA{public:intmember;//notethismember};classB:virtualprivateA//noteprivate{};classC:virtualprotectedA//noteprotected{};classD:publicB,//doesn'tmetterpublicorwhateverherepublicC{};intmain(){Dtest;te