草庐IT

private-messaging

全部标签

c++ - 私有(private)/公共(public) header 示例?

谁能给我一个公共(public)和私有(private)标题如何工作的例子?我在网上做了一些阅读,但我似乎无法通过示例代码找到很多有用的信息。有人建议我应该使用私有(private)header来分隔代码的公共(public)和私有(private)部分以创建静态库。经过一番阅读,我对它的工作原理有了一个大致的了解,但我真的很感激有一个很好的例子来帮助我入门。具体来说,我不太明白的是如何将接口(interface)函数放在我的公共(public)头文件中,而将私有(private)变量/函数放在我的私有(private)头文件中?谢谢!编辑:也许我的问题措辞不对,但我的意思是,例如,我

c++ - protected 与私有(private)的析构函数

C++中protected析构函数和私有(private)析构函数有什么区别吗?如果基类析构函数是私有(private)的,我想在删除派生类对象时仍然会调用它。 最佳答案 如果基类析构函数是private或protected,那么你不能通过基类指针调用delete。使用protected析构函数来防止通过基类指针破坏派生对象。它将析构函数的访问限制为派生类。它可以防止自动(堆栈)类基的对象。Ineffectitisusedtoallowanyotherpolymorphicuseofderivedclassesviapointers

java - 默认情况下,Java 和 C++ 中的类是私有(private)的还是公有的?

Java和C++中的类默认是私有(private)的还是公有的? 最佳答案 Java:默认情况下,类的可见性是包私有(private)的,即仅对同一包中的类可见。C++:该类没有像Java中那样定义的可见性。如果您将它们包含在编译单元中,它们是可见的。 关于java-默认情况下,Java和C++中的类是私有(private)的还是公有的?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questio

c++ - 在继承中访问私有(private)成员

我有一个A类,它有一个字段val声明为私有(private)。我想声明一个类B,它继承自A并可以访问val。有没有办法在C++上做到这一点?我想这样做是因为我需要重载A的一些函数,而根本不改变A代码。谢谢。 最佳答案 快速回答:你没有。这就是protected关键字的用途,如果您想授予对子类的访问权限但不授予其他人的访问权限,则可以使用该关键字。private意味着没有人可以访问这些变量,甚至是子类。如果您根本无法更改A中的代码,则该变量可能存在public/protected访问方法。否则,这些变量不应该从子类中访问,只有hack

c++ - C++ 中有没有办法创建 'super private' 变量?

我有一个C++功能的想法,我想知道是否可以创建。假设我希望“MyClass”中的私有(private)变量只能由公共(public)getter和setter这两个函数访问。也就是说,如果MyClass的另一个公共(public)或私有(private)函数试图获取或更改我的super私有(private)变量的值,我将得到一个编译错误。但是,getter和setter行为正常。有什么想法吗?编辑1:一个用例是让getter/setter执行错误检查或其他形式的逻辑。我什至不希望类本身直接接触变量。编辑2:然后是这样的:templateclassState{private:Tstate

c++ - 为什么在 C++ 中在公共(public)成员之下定义私有(private)成员?

在C++中,有时在类定义中,首先声明公共(public)成员,然后声明私有(private)成员。但是变量或数据成员通常是私有(private)的并由公共(public)方法使用。因此,在这种情况下,使用了变量,但还没有声明。因此代码变得难以理解。但后来我找到了著名的程序员、网站或书籍来声明私有(private)成员。有人知道是什么原因吗? 最佳答案 我这样做是因为我类(class)的用户不关心私有(private)成员,他们对公共(public)API感兴趣(即如何使用我的类(class))。另外,在头文件中,我通常只是声明成员函

c++ - 在内联命名空间 header 中隐藏私有(private)常量

我在头文件的命名空间中包含一些内联函数,目前无法将它们移动到cpp文件中。其中一些内联函数使用魔术常量,例如://Foo.hnamespaceFoo{constintBAR=1234;inlinevoidsomeFunc(){//DosomethingwithBAR}}但是,我想将这些魔术常量设为私有(private)-有什么想法吗?我的第一个想法是使用匿名命名空间://Foo.hnamespaceFoo{namespace{//'private'constantshereconstintBAR=1234;}inlinevoidsomeFunc(){//DosomethingwithB

c++ - 从子类访问私有(private)继承类的名称

以下代码编译失败,使用g++时出现此错误,使用clang时出现类似错误。main.cpp:16:19:error:'QByteArray'isaprivatememberof'QByteArray'Container2(constQByteArray&ba);^main.cpp:3:18:note:constrainedbyprivateinheritancehereclassContainer1:privateQByteArray^~~~~~~~~~~~~~~~~~../edge-clang/qt5/include/QtCore/qbytearray.h:167:21:note:me

c++ - 如何使用#pragma message() 使消息指向文件(lineno)?

为了在我的代码中添加“待办事项”项,我想在编译器输出中添加一条消息。我希望它看起来像这样:c:/temp/main.cpp(104):TODO-addcodetoimplementthis为了利用VisualStudio构建输出功能通过双击导航到相应的行。但__LINE__宏似乎扩展为一个int,不允许写入#pragmamessage(__FILE__"("__LINE__"):...")还有其他方法吗? 最佳答案 这是一个允许您单击输出Pane的工具:(那里还有其他一些不错的提示)http://www.highprogrammer

c++ - 我应该使用公共(public)变量还是私有(private)变量?

我是第一次做一个大型项目。我有很多类,其中一些具有公共(public)变量,一些具有带有setter和getter方法的私有(private)变量,并且具有两种类型。我决定重写这段代码,主要只使用一种类型。但我不知道我应该使用哪个(仅用于同一对象中的方法的变量始终是私有(private)的,不是这个问题的主题)。我知道公共(public)和私有(private)意味着什么理论,但在现实世界中使用的是什么,为什么? 最佳答案 private数据成员通常被认为是好的,因为它们提供了封装。为它们提供getter和setter会破坏这种封装