草庐IT

private-messaging

全部标签

C++:为什么必须声明私有(private)函数?

为什么C++中的类必须声明它们的私有(private)函数?有实际的技术原因(它在编译时的作用是什么)还是仅仅是为了一致性? 最佳答案 Iaskedwhyprivatefunctionshadtobedeclaredatall,astheydon'taddanything(neitherobjectsizenorvtableentry)forothertranslationunitstoknow如果你仔细想想,这类似于在文件中声明一些函数static。它从外部看不到,但它对编译器本身很重要。编译器想知道函数的签名,然后才能使用它。这

c++ - 匿名命名空间中的私有(private)静态成员函数还是自由函数?

我最近在风格上进行了更改,想看看其他c++程序员对此有何看法,以及它是否有任何缺点。基本上,当我需要一个不需要访问给定类成员的实用程序函数时,我以前做的事情是这样的:文件.hclassA{public://publicinterfaceprivate:staticintsome_function(int);};文件.cppintA::some_function(int){//...}但最近,我更喜欢做这样的事情:文件.cppnamespace{intsome_function(int){}}//therestoffile.cpp这是我的思考过程:编辑少了一个文件只需将函数列在头文件中即

c++ - 匿名命名空间中的私有(private)静态成员函数还是自由函数?

我最近在风格上进行了更改,想看看其他c++程序员对此有何看法,以及它是否有任何缺点。基本上,当我需要一个不需要访问给定类成员的实用程序函数时,我以前做的事情是这样的:文件.hclassA{public://publicinterfaceprivate:staticintsome_function(int);};文件.cppintA::some_function(int){//...}但最近,我更喜欢做这样的事情:文件.cppnamespace{intsome_function(int){}}//therestoffile.cpp这是我的思考过程:编辑少了一个文件只需将函数列在头文件中即

c++ - 允许 "friend"类仅访问一些私有(private)成员

假设我有三个C++类FooA、FooB和FooC。FooA有一个名为Hello的成员函数,我想在FooB类中调用该函数,但我不希望FooC类能够调用它。我能想出实现这一点的最好方法是将FooB声明为FooA的friend类。但只要我这样做,所有FooA的私有(private)成员和protected成员都会暴露出来,这对我来说是非常NotAcceptable。所以,我想知道C++(03或11)中是否有比friend类更好的机制来解决这个难题。如果可以使用以下语法,我认为会很好:classFooA{privatefriendclassFooB:voidHello();voidHello2

c++ - 允许 "friend"类仅访问一些私有(private)成员

假设我有三个C++类FooA、FooB和FooC。FooA有一个名为Hello的成员函数,我想在FooB类中调用该函数,但我不希望FooC类能够调用它。我能想出实现这一点的最好方法是将FooB声明为FooA的friend类。但只要我这样做,所有FooA的私有(private)成员和protected成员都会暴露出来,这对我来说是非常NotAcceptable。所以,我想知道C++(03或11)中是否有比friend类更好的机制来解决这个难题。如果可以使用以下语法,我认为会很好:classFooA{privatefriendclassFooB:voidHello();voidHello2

c++ - 删除copy-ctor和copy-assignment - public、private还是protected?

为了使对象不可复制,我们可以显式删除其复制构造函数和复制赋值运算符。我的问题是:什么是正确的做法-在类(class)的public、private或protected部分?而且-这个选择有什么不同吗? 最佳答案 whatistherightplacetodoit-inthepublic,privateorprotectedsectionoftheclass?我会将它们放在public部分。这是因为删除构造函数或赋值运算符与将它们设为private/protected是正交的;当这些没有被删除时,它们默认是public的。在我看来,将

c++ - 删除copy-ctor和copy-assignment - public、private还是protected?

为了使对象不可复制,我们可以显式删除其复制构造函数和复制赋值运算符。我的问题是:什么是正确的做法-在类(class)的public、private或protected部分?而且-这个选择有什么不同吗? 最佳答案 whatistherightplacetodoit-inthepublic,privateorprotectedsectionoftheclass?我会将它们放在public部分。这是因为删除构造函数或赋值运算符与将它们设为private/protected是正交的;当这些没有被删除时,它们默认是public的。在我看来,将

c++ - 我们什么时候需要 C++ 中的私有(private)构造函数?

我对C++中的私有(private)构造函数有疑问。如果构造函数是私有(private)的,如何创建类的实例?我们应该在类中有一个getInstance()方法吗? 最佳答案 private构造函数有几种情况:限制为除friend之外的所有人创建对象;在这种情况下,所有构造函数都必须是privateclassA{private:A(){}public://otheraccessiblemethodsfriendclassB;};classB{public:A*Create_A(){returnnewA;}//creationrigh

c++ - 我们什么时候需要 C++ 中的私有(private)构造函数?

我对C++中的私有(private)构造函数有疑问。如果构造函数是私有(private)的,如何创建类的实例?我们应该在类中有一个getInstance()方法吗? 最佳答案 private构造函数有几种情况:限制为除friend之外的所有人创建对象;在这种情况下,所有构造函数都必须是privateclassA{private:A(){}public://otheraccessiblemethodsfriendclassB;};classB{public:A*Create_A(){returnnewA;}//creationrigh

C++ 类(公共(public)、私有(private)和 protected )

如何将C++中的类声明为public、private或protected? 最佳答案 在C++中,没有像Java或C#中那样具有访问说明符的整个类的概念。如果一段代码对某个类具有可见性,则它可以引用该类的名称并对其进行操作。也就是说,对此有一些限制。仅仅因为您可以引用一个类并不意味着您可以实例化它,例如,因为构造函数可能被标记为私有(private)。同样,如果该类是在另一个类的私有(private)或protected部分中声明的嵌套类,则该类将无法从该类及其friend的外部访问。