草庐IT

encapsulation

全部标签

C++ 私有(private)真的是私有(private)的吗?

我正在尝试C++中private访问说明符的有效性。如下:界面://class_A.hclassA{public:voidprintX();private:voidactualPrintX();intx;};实现://class_A.cppvoidA::printX(){actualPrintX();}voidA::actualPrintX(){std::cout我将它内置到静态库(.a/.lib)中。我们现在有一个class_A.h和classA.a(或classA.lib)对。我编辑了class_A.h并从中删除了private:。现在在另一个classTester.cpp中:#i

C++ 私有(private)真的是私有(private)的吗?

我正在尝试C++中private访问说明符的有效性。如下:界面://class_A.hclassA{public:voidprintX();private:voidactualPrintX();intx;};实现://class_A.cppvoidA::printX(){actualPrintX();}voidA::actualPrintX(){std::cout我将它内置到静态库(.a/.lib)中。我们现在有一个class_A.h和classA.a(或classA.lib)对。我编辑了class_A.h并从中删除了private:。现在在另一个classTester.cpp中:#i

声明类和方法但不声明成员的 C++ 头文件?

是否可以创建一个C++头文件(.h)来声明一个类及其公共(public)方法,但不定义该类中的私有(private)成员?我找到了fewpages也就是说,您应该在头文件中声明该类及其所有成员,然后在您的cpp文件中分别定义这些方法。我问是因为我想要一个在Win32DLL中定义的类,并且我希望它被正确封装:该类的内部实现可能会更改,包括其成员,但这些更改不应影响使用该类的代码.我想如果我有这个,那么编译器就不可能提前知道我的对象的大小。但这应该没问题,只要编译器足够聪明,可以使用构造函数,并且只传递指向内存中存储对象的位置的指针,并且永远不要让我运行“sizeof(MyClass)”。

声明类和方法但不声明成员的 C++ 头文件?

是否可以创建一个C++头文件(.h)来声明一个类及其公共(public)方法,但不定义该类中的私有(private)成员?我找到了fewpages也就是说,您应该在头文件中声明该类及其所有成员,然后在您的cpp文件中分别定义这些方法。我问是因为我想要一个在Win32DLL中定义的类,并且我希望它被正确封装:该类的内部实现可能会更改,包括其成员,但这些更改不应影响使用该类的代码.我想如果我有这个,那么编译器就不可能提前知道我的对象的大小。但这应该没问题,只要编译器足够聪明,可以使用构造函数,并且只传递指向内存中存储对象的位置的指针,并且永远不要让我运行“sizeof(MyClass)”。

java - 如何按私有(private)字段对列表进行排序?

我的实体类如下所示:publicclassStudent{privateintgrade;//otherfieldsandmethods}我就是这样使用它的:Liststudents=...;考虑到它是私有(private)字段,如何按grade对students进行排序? 最佳答案 您有以下选择:使grade可见为grade定义一个getter方法定义一个ComparatorinsideStudent让Student实现Comparable使用反射(在我看来这不是一个解决方案,它是一个解决方法/hack)解决方案示例3:publi

java - 如何按私有(private)字段对列表进行排序?

我的实体类如下所示:publicclassStudent{privateintgrade;//otherfieldsandmethods}我就是这样使用它的:Liststudents=...;考虑到它是私有(private)字段,如何按grade对students进行排序? 最佳答案 您有以下选择:使grade可见为grade定义一个getter方法定义一个ComparatorinsideStudent让Student实现Comparable使用反射(在我看来这不是一个解决方案,它是一个解决方法/hack)解决方案示例3:publi

java - Java封装

Thisquestionalreadyhasanswershere:Whyusegettersandsetters/accessors?(39个答案)4年前关闭。我们总是说,如果我们仅定义变量private并定义用于访问这些变量的getter设置方法,数据将被封装。我的问题是,是否可以通过getter和setter访问变量(数据),为什么数据是隐藏的或安全的呢?我在Google上搜索了很多说明,但是什么也没找到。每个人都在他们的博客和帖子中说过,这是一种数据隐藏技术,但尚未对其进行解释/阐述。 最佳答案 我理解您的问题的方式是,尽管

java - Java封装

Thisquestionalreadyhasanswershere:Whyusegettersandsetters/accessors?(39个答案)4年前关闭。我们总是说,如果我们仅定义变量private并定义用于访问这些变量的getter设置方法,数据将被封装。我的问题是,是否可以通过getter和setter访问变量(数据),为什么数据是隐藏的或安全的呢?我在Google上搜索了很多说明,但是什么也没找到。每个人都在他们的博客和帖子中说过,这是一种数据隐藏技术,但尚未对其进行解释/阐述。 最佳答案 我理解您的问题的方式是,尽管

java - 为什么要将 getter 和 setter 方法声明为私有(private)?

这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个回答)关闭6年前。我看到了一段代码,其中getter和setter方法被声明为私有(private)的。我试图弄清楚它背后的逻辑,我真的很难理解你为什么要将它们声明为私有(private)?这与我们试图通过getter和setter实现的目标完全相反。 最佳答案 我能想到几个原因:您想阻止future的公共(public)访问。如果其他程序员看到您的代码并想要访问变量,但没有setter和getter,他可能会认为您只是忘记了它们

java - 为什么要将 getter 和 setter 方法声明为私有(private)?

这个问题在这里已经有了答案:Whyusegettersandsetters/accessors?(37个回答)关闭6年前。我看到了一段代码,其中getter和setter方法被声明为私有(private)的。我试图弄清楚它背后的逻辑,我真的很难理解你为什么要将它们声明为私有(private)?这与我们试图通过getter和setter实现的目标完全相反。 最佳答案 我能想到几个原因:您想阻止future的公共(public)访问。如果其他程序员看到您的代码并想要访问变量,但没有setter和getter,他可能会认为您只是忘记了它们