草庐IT

lldb_private

全部标签

c++ - 为什么我可以在复制构造函数中访问私有(private)变量?

我了解到我永远无法访问私有(private)变量,只能使用类中的get函数。但是为什么我可以在复制构造函数中访问它呢?例子:Field::Field(constField&f){pFirst=newT[f.capacity()];pLast=pFirst+(f.pLast-f.pFirst);pEnd=pFirst+(f.pEnd-f.pFirst);std::copy(f.pFirst,f.pLast,pFirst);}我的声明:private:T*pFirst,*pLast,*pEnd; 最佳答案 访问修饰符适用于类级别,而不适

c++ - 为什么要显式删除构造函数而不是使其私有(private)?

何时/为什么要显式删除我的构造函数?假设原因是为了防止它的使用,为什么不把它设为private?classFoo{public:Foo()=delete;}; 最佳答案 怎么样://deletedconstructorclassFoo{public:Foo()=delete;public:staticvoidfoo();};voidFoo::foo(){Foof;//illegal}对//privateconstructorclassFoo{private:Foo(){}public:staticvoidfoo();};voidFo

c++ - 私有(private)方法的单元测试

这个问题在这里已经有了答案:HowdoItestaclassthathasprivatemethods,fieldsorinnerclasses?(58个回答)关闭4年前.我正在编写一些单元测试。特别想测试一些私有(private)方法。到目前为止,我已经想出了使用。#defineprivatepublic但我对此并不满意,因为从单元测试的角度来看,它会破坏所有封装。你使用什么方法对私有(private)方法进行单元测试。 最佳答案 与您在问题中提到的讨厌的#definehack相比,更简洁的机制是使测试成为被测类的friend。这

c++ - 如何在 C++ 中初始化私有(private)静态常量映射?

我只需要字典或关联数组string=>int。这种情况下有类型映射C++。但我只需要一个映射所有实例(->静态),并且这个映射不能更改(->const);我在boost库中找到了这种方式std::mapexample=boost::assign::map_list_of(1,'a')(2,'b')(3,'c');没有这个库还有其他解决方案吗?我尝试过类似的方法,但map初始化总是存在一些问题。classmyClass{private:staticmapcreate_map(){mapm;m[1]=2;m[3]=4;m[5]=6;returnm;}staticmapmyMap=creat

c++ - 内部类可以访问私有(private)变量吗?

classOuter{classInner{public:Inner(){}voidfunc();};private:staticconstchar*constMYCONST;intvar;};voidOuter::Inner::func(){var=1;}constchar*constOuter::MYCONST="myconst";当我使用类Outer::Inner'编译时出现此错误,没有名为`var'的成员 最佳答案 内部类是定义它的类的friend。所以,是的;Outer::Inner类型的对象可以访问Outer类型的对象的

c++ - 什么时候应该使用 C++ 私有(private)继承?

与protected继承不同,C++私有(private)继承进入了主流C++开发。但是,我仍然没有找到它的好用处。你们什么时候用? 最佳答案 我一直在使用它。我脑海中的几个例子:当我想公开基类的部分但不是全部接口(interface)时。公共(public)继承将是一个谎言,如Liskovsubstitutability已损坏,而组合则意味着编写一堆转发函数。当我想从没有虚拟析构函数的具体类派生时。公共(public)继承会邀请客户端通过指向基址的指针进行删除,从而调用未定义的行为。一个典型的例子是从一个STL容器私有(priva

c++ - 当非常量方法是私有(private)的时,为什么不调用公共(public) const 方法?

考虑这段代码:structA{voidfoo()const{std::cout编译错误是:error:'voidA::foo()'isprivate`.但是当我删除私有(private)的时,它就可以工作了。为什么非const方法是private时不调用publicconst方法?换句话说,为什么重载解决在访问控制之前?这很奇怪。你认为它是一致的吗?我的代码可以工作,然后我添加了一个方法,我的工作代码根本无法编译。 最佳答案 当您调用a.foo();时,编译器会通过重载解析来找到要使用的最佳函数。当它构建它发现的重载集时voidfo

c++ - C++中的私有(private)虚方法

在C++中将私有(private)方法设为虚拟有什么好处?我在一个开源C++项目中注意到了这一点:classHTMLDocument:publicDocument,publicCachedResourceClient{private:virtualboolchildAllowed(Node*);virtualPassRefPtrcreateElement(constAtomicString&tagName,ExceptionCode&);}; 最佳答案 HerbSutter已经很好地解释了它here.Guideline#2:Pref

ios - 单元测试私有(private)方法 - Objective-C

我使用GHUnit。我想对私有(private)方法进行单元测试,但不知道如何测试它们。我找到了很多关于为什么或为什么不测试私有(private)方法的答案。但没有找到如何测试它们。我不想讨论是否应该测试私有(private),但会专注于如何测试它。谁能给我一个如何测试私有(private)方法的例子? 最佳答案 Objective-C中的方法并不是真正私有(private)的。您收到的错误消息是编译器无法验证您调用的方法是否存在,因为它未在公共(public)接口(interface)中声明。解决这个问题的方法是在类类别中公开私有

objective-c - 如何制作真正的私有(private)实例变量?

我想创建一个无法从外部访问的实例变量。在objective-c中可能会有这样的事情吗?我记得苹果有私有(private)变量之类的东西,但如果人们知道它们,他们就可以使用它们。Apple称其为“私有(private)API”,但显然其他人如果发现其中的内容就可以访问这些内容。直到现在我相信这样的事情会创建一个私有(private)实例变量:@interfaceMyClass:NSObject{CGFloatweight;}没有@property,没有@synthesize,只有上面的声明。我也知道Apple添加了一个_inFrontOfTheirPrivateInstanceVaria