草庐IT

Private-Package

全部标签

C++ 私有(private)函数 : Whether to pass class member variable by function parameter, 或不

这是一个在C++类实现中反复出现的问题。我很好奇人们在这里的想法是什么。您更喜欢哪种代码,为什么?classA{public:/*Constructors,Destructors,Publicinterfacefunctions,etc.*/voidpublicCall(void);private:voidf(void);CMyClassm_Member1;};与voidA::publicCall(void){f();}voidA::f(void){//dosomestuffpopulatingm_Member1}或者替代方案:classA{public:/*Constructors,

c++ - 为什么我可以在 C++ 中从外部访问私有(private)方法?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whyisitallowedtocallderivedclass'privatevirtualmethodviapointerofbaseclass?最近遇到一个奇怪的问题,请引用如下代码:#includeusingnamespacestd;classA{public:virtualvoiddisp(){coutdisp();}输出是:AdispBdisp我想知道为什么指针b可以访问disp()?这是私有(private)的!不是吗?

c++ - 我可以将 boost::make_shared 与私有(private)构造函数一起使用吗?

考虑以下几点:classDirectoryIterator;namespacedetail{classFileDataProxy;classDirectoryIteratorImpl{friendclassDirectoryIterator;friendclassFileDataProxy;WIN32_FIND_DATAWcurrentData;HANDLEhFind;std::wstringroot;DirectoryIteratorImpl();explicitDirectoryIteratorImpl(conststd::wstring&pathSpec);voidincreme

c++ - 派生类能够访问其基类的私有(private)成员

我遇到了一种奇怪的情况,我的派生类能够访问其涉及模板的基类的私有(private)成员。考虑这个例子:classA{templatestructa{usingtype=a;};};classB:A{templateusingtype=typenamea::type;};intmain(){}编译结果:mingw64/mingw-w64-x86_64-clang3.9.1-3(来自MSYS2)$clang++-Walltest.cpp-otest.exe-std=c++14mingw64/mingw-w64-x86_64-gcc6.3.0-2(来自MSYS2)$g++-Walltest.

c++ - 错误的私有(private)基类无法访问?

使用g++4.2.1编译此代码:structS{};templatestructST{};templateclassref_count:privateBaseType{};templateclassrep_base:publicRefCountType{};classwrap_rep:publicrep_base>{typedefrep_base>base_type;//line11};我得到:bug.cpp:1:error:‘structS’isinaccessiblebug.cpp:11:error:withinthiscontext但是,如果我将wrap_rep类更改为使用ST:

c++ - 源文件中未公开的私有(private)成员变量与全局变量

我正在查看我目前工作的公司的一些代码,我在*.cpp文件中看到一些(不是很多)静态全局变量声明(例如,到存储监听器列表),其中.h/.cpp文件属于一个类。如果一个变量(静态或其他)仅由类本身使用,我总是将其声明为私有(private)的。这比声明变量私有(private)有优势吗?这是不好的做法吗?或者当声明仅由类使用而没有其他人使用的静态变量时,这是否正常?EDIT:InmyquestionIaskedaboutstatic,butwhatifitisanon-staticglobalvariableinthe.cppfileinsteadofitbeingaprivatememb

c++ - 我应该使用 shared_ptr<Object> myObject = (shared_ptr<Object>) new Object() 来访问私有(private)构造函数吗?

我正在使用广泛使用以下语法的代码库:shared_ptrmyObject=(shared_ptr)newObject();我注意到我无法使用make_shared访问私有(private)构造函数,但是shared_ptrmyObject=(shared_ptr)newObject();工作得很好。我应该仅仅因为它看起来有效而使用它吗?有什么危险吗?它与make_shared有何不同??我知道this中的答案问题,它在make_shared之间进行比较和:std::shared_ptrp2(newObject("foo"));但我没能找到对我遇到的语法的引用。和上面有什么不同,还是一样

c++ - 私有(private)使用基构造函数的声明不是私有(private)的

基础构造函数的using声明是私有(private)的,但仍然可以构造该类。为什么?对于operator[]的using声明,辅助功能的工作方式不同,必须公开。#includetemplateclassVec:std::vector{private:usingstd::vector::vector;//Works,evenifprivate.Why?public:usingstd::vector::operator[];//mustbepublic};intmain(){Vecvec={2,2};autotest=vec[1];}如果我希望构造函数是私有(private)的怎么办?可以

c++ - 当构造函数是私有(private)的时使用公共(public)析构函数

我见过这样的代码,其中构造函数被声明为私有(private)的,而析构函数是公共(public)的。这样的声明有什么用?析构函数是否需要公开以便在继承期间可以进行调用,还是代码中的错误?这个问题的信息似乎有点少,但我真正想知道的是,当构造函数需要私有(private)时,是否有公共(public)析构函数遵守C++规则? 最佳答案 简答将构造函数创建为私有(private)但将析构函数创建为公共(public)有很多实际用途。您可以使用此范例来:强制引用计数(SeeHiteshVaghani'sexample).实现singleto

c++ - 我无法理解这一行 - 取消引用私有(private)成员变量的地址或什么?

我刚才问了一个问题aboutaccessingtheunderlyingcontainerofSTLadapters.我得到了一个非常有帮助的答案:templateS&Container(priority_queue&q){structHackedQueue:privatepriority_queue{staticS&Container(priority_queue&q){returnq.*&HackedQueue::c;}};returnHackedQueue::Container(q);}intmain(){priority_queuepq;vector&tasks=Contain