我是第一次做一个大型项目。我有很多类,其中一些具有公共(public)变量,一些具有带有setter和getter方法的私有(private)变量,并且具有两种类型。我决定重写这段代码,主要只使用一种类型。但我不知道我应该使用哪个(仅用于同一对象中的方法的变量始终是私有(private)的,不是这个问题的主题)。我知道公共(public)和私有(private)意味着什么理论,但在现实世界中使用的是什么,为什么? 最佳答案 private数据成员通常被认为是好的,因为它们提供了封装。为它们提供getter和setter会破坏这种封装
我只是碰巧发现可以使用using指令直接在封闭类之外访问嵌套的私有(private)模板类:classwrapper{private:templateclass__tklass{};class__klass{};};templateusingtklass=wrapper::__tklass;//ExpectederrorbutcompilesOK//usingklass=wrapper::__klass;//"Error:__klassisprivate"intmain(){tklassv1;//ExpectederrorbutcompilesOK//wrapper::__tklass
这个问题在这里已经有了答案:WhatisthedifferencebetweenprivateandprotectedmembersofC++classes?(19个回答)关闭1年前。我不明白protected和私有(private)成员或方法之间的区别,因为我认为两者都会隐藏要从类外部访问的成员或函数。protected关键字和私有(private)关键字有什么区别? 最佳答案 private-只能在定义它们的类中访问。protected-在定义它们的类和从该类继承的其他类中可访问。
有没有办法在cpp文件中向用户隐藏C++类的私有(private)数据成员?我认为私有(private)成员是实现的一部分,在头文件中声明它们似乎有点倒退。 最佳答案 “pimpl”成语是通常的处理方式。见http://www.gotw.ca/gotw/024.htmhttp://www.gotw.ca/gotw/028.htmhttp://herbsutter.com/gotw/_100/(针对C++11更新) 关于c++-隐藏私有(private)数据成员?(C++),我们在Stac
人们为什么要定义一个私有(private)的拷贝构造函数?何时将复制构造函数和赋值运算符设为私有(private)是一个好的设计?如果类中没有指向唯一对象(如文件名)的指针或句柄的成员,那么在其他情况下,私有(private)复制构造函数是个好主意吗?同样的问题适用于赋值运算符。鉴于大多数C++都围绕对象的复制和通过引用传递,是否有任何涉及私有(private)复制构造函数的好设计? 最佳答案 一个用例是单例模式,其中类只能有一个实例。在这种情况下,您需要将构造函数和赋值operator=设为私有(private),这样就无法创建多
是否有任何理由使重写的C++虚函数的权限不同于基类?这样做有什么危险吗?例如:classbase{public:virtualintfoo(double)=0;}classchild:publicbase{private:virtualintfoo(double);}C++faq说这是一个坏主意,但没有说明原因。我在一些代码中看到了这个习语,我相信作者试图使这个类成为最终的,基于不可能覆盖私有(private)成员函数的假设。但是,Thisarticle显示了一个覆盖私有(private)函数的示例。当然anotherpartoftheC++faq建议不要这样做。我的具体问题:在派生类
为什么D类可以编译,而C类不能编译?classA{public:A(int){}};templateclassB:privateT//Note:privatebaseclass{public:usingT::T;};classC:publicB{public:C():B(123){}//Error:'classAA::A'isinaccessible};//withinthiscontextusingBA=B;classD:publicBA{public:D():BA(123){}//OK};我用GCC测试过,Clang和VisualC++,它们都是一样的。将classB:privat
哎呀,暂时不在那个套接字库上工作。我正在尝试在C++方面对自己进行更多的教育。对于类,有没有办法使变量对公众只读,但在私有(private)访问时读+写?例如像这样:classmyClass{private:intx;//thiscouldbeanytype,hypotheticallypublic:voidf(){x=10;//thisisOK}}intmain(){myClasstemp;//Iwantthis,butwithprivate:it'snotallowedcout简而言之,我的问题是如何允许从f()内完全访问x但从其他任何地方进行只读访问,即intnewint=tem
这个问题在这里已经有了答案:关闭11年前.PossibleDuplicate:Whatistheuseofmakingconstructorprivateinaclass?我们在哪里需要私有(private)构造函数?我们如何实例化具有私有(private)构造函数的类? 最佳答案 私有(private)构造器意味着用户不能直接实例化一个类。相反,您可以使用NamedConstructorIdiom之类的东西创建对象。,其中有static类函数,可以创建和返回类的实例。NamedConstructorIdiom用于更直观地使用类。C
例如,Base类有两个公共(public)方法:foo()和bar()。Derived类继承自Base类。在Derived类中,我想将foo()设为公开,而将bar()设为私有(private)。以下代码是正确且自然的方法吗?classBase{public:voidfoo();voidbar();};classDerived:publicBase{private:voidbar();}; 最佳答案 C++'03标准的第11.3节描述了这种能力:11.3AccessdeclarationsTheaccessofamemberofab