草庐IT

UAC-protected

全部标签

C++ 私有(private)和 protected 虚方法

为了分离两个客户端的接口(interface),将虚拟方法设为私有(private)似乎是件好事-1.实例化对象并调用方法的客户端2.派生自该类并可能想要覆盖该方法的客户。简单地说——第一个客户不需要知道一个方法是否是虚拟的。他将调用基类公共(public)非虚拟方法,该方法又将调用私有(private)虚拟方法。例如,请参见下面的代码。现在,如果虚方法需要向其基类的相应虚方法发送super消息,例如Save方法-它必须通过继承链中的所有虚方法才能保存对应的数据每个派生级别-我们别无选择,只能使用protected虚拟方法-除非有一种方法可以保证在所有派生级别保存数据而不使用super

c++ - 如何检查类是否具有默认构造函数,公共(public)的、 protected 或私有(private)的

我需要检查一个类C有一个默认构造函数,可以是隐式的也可以是自定义的,并且可以是public,protected或private.我尝试使用std::is_default_constructible::value,如果C则返回真有一个public默认构造函数(隐式或自定义)但false如果C有一个protected或private默认构造函数(尽管接缝是标准行为。)有什么方法可以检查一个类是否有protected或private默认构造函数?注意(如果这可能有帮助):检查是从friend函数执行的类(class)C待检查。我需要执行此检查以默认构造对应于nullptr的对象m_objs的

C++: protected 类构造函数

如果一个类总是要被继承,那么让构造函数protected有意义吗?classBase{protected:Base();};classChild:protectedBase{public:Child():Base();};谢谢。 最佳答案 只有在您不希望客户端创建Base的实例时才有意义,而是您希望它成为某些[derived]类的基类,和/或希望它成为由Base的friend使用(参见下面的示例)。请记住,protected函数(和构造函数)只能从派生类和friend类中调用。classSample;classBase{friend

c++ - 纯虚类中的构造函数应该是 "protected"还是 "public"?

以下示例来自《InsideC++objectmodel》一书classAbstract_base{public:virtual~Abstract_base()=0;virtualvoidinterface()const=0;virtualconstchar*mumble()const{return_mumble;}protected:char*_mumble;};作者说如果我想初始化纯虚基类的数据成员_mumble,应该实现一个“protected构造函数”。但为什么要保护?为什么“publicconstructor”不适合这个类?感谢您的回答,如果有例子就完美了。

c++ - 访问派生类中类的 protected 成员

我这里有一个旧代码库,他们在其中使用了protected成员变量。可以讨论这是否是一个好主意。但是,代码必须使用gcc3编译得很好。我有一个派生模板类Bar,它像这样使用类模板Foo中的protected成员xtemplateclassFoo{public://stuff...protected:some::typex;}templateBar:Foo{public:voidcleanup();}在cleanup()的方法声明中有一些用x完成的事情templatevoidBar::cleanup(){doSomeThingCleanUpLike(x);}这不适用于gcc4,尽管它应该适

c++ - 如何从派生类访问基类中的 protected 方法?

下面是一段令我恼火的代码示例:classBase{protected:virtualvoidfoo()=0;};classDerived:publicBase{private:Base*b;/*Initializedbyconstructor,notshownhereIntendedtostoreapointeronaninstanceofanyderivedclassofBase*/protected:virtualvoidfoo(){/*Someimplementation*/};virtualvoidfoo2(){this->b->foo();/*Compilatorsetsan

C++ 嵌套结构继承规则(访问 protected 成员)

这个问题在这里已经有了答案:Protecteddatainparentclassnotavailableinchildclass?(4个答案)关闭5年前。谁能给我解释一下为什么(比如,“为什么语言是这样的?”)下面的代码在B::C::bar的第二行有一个编译错误?classA{public:structD{voidcall_foo(A&a){a.foo();}};protected:voidfoo(){}};classB:publicA{structC:publicA::D{voidbar(A&a,B&b){b.foo();//OKa.foo();//Error.Huh?call_fo

c++ - 我怎么说 "noexcept if execution of protected base constructor is noexcept"?

我们遇到过这种情况,想知道解决它的最佳方法templatestructA:T{A(T&&t)noexcept(noexcept(T(std::move(t)))):T(std::move(t)){}};不幸的是编译失败,因为T的移动构造函数是protected,我们只能在*this的构造函数初始化列表中调用它。使这项工作有什么变通办法,或者甚至有标准的方法吗? 最佳答案 您正在寻找noexcept(std::is_nothrow_move_constructible::value):http://en.cppreference.co

c++ - friend 访问 protected 嵌套类

我有以下C++代码:classA{protected:structNested{intx;};};classB:publicA{friendclassC;};classC{voidm1(){B::Nestedn;//orA::Nested}};用g++4.4编译这个片段,无论我在m1中使用B::Nested还是A::Nested都没有区别。Clang接受B::Nested,但如果我接受A::Nested,则不会编译。这是g++还是clang中的错误? 最佳答案 根据标准,GCC是正确的,Clang是错误的。它说在11.2/4Amem

windows - 是什么让 c :\Program Files UAC-protected?

我知道c:\ProgramFiles受UAC保护,如果我允许用​​户安装到d:\ProgramFiles,这不是,通过默认情况下,受UAC保护。是什么让c:\ProgramFilesUAC保护目录安全设置?仅仅是目录安全性,还是Windows做了其他事情使其变得特别?如果有可能使d:\ProgramFiles与c:\ProgramFiles具有同等安全性,我正在尝试建议某人。如果我要创建与c:\ProgramFiles具有相同目录安全性的d:\ProgramFiles,这些文件夹是否等效? 最佳答案 仅目录安全性就决定了用户在该文件