面向对象的编程逻辑
Object Oriented Programming Logic
我正在学习C++OOP的基本概念,我遇到了一个逻辑问题。
#include <iostream>
#include <conio.h>
using namespace std;
class A {
int i;
public:
void set(int x) {
i=x;
}
int get() {
return i;
}
void cpy(A x) {
i=x.i;
}
};
int main()
{
A x, y;
x.set(10);
y.set(20);
cout << x.get() << "t" << y.get() << endl;
x.cpy(y);
cout << x.get() << "t" << y.get() << endl;
getch();
}
我想知道上面的代码为什么我能够访问x.i
[第 19 行],它是不同对象中的私有成员。即使对象作为参数传递,私有作用域是否仅限于同一类?
private
在 C++ 中表示对类私有,而不是对对象私有。这两种解释都是可能的,事实上有些语言选择了另一种。但是大多数语言都像C++,并允许同一类的对象访问另一个实例的私有成员。
变量
x
和y
是同一类的两个实例。它们是不同的对象,但它们确实属于同一类。这就是为什么可以从成员函数访问私有成员的原因。
类的私有属性或方法意味着不能直接从类范围之外访问它。因为公共方法是在一个类中定义的,通过该类我们可以访问和操作私有成员的值。
在上面的示例中,您不是直接从对象访问'i'
,而是通过公共方法对其进行操作。
这样想:你有一个银行账户,你在银行里的钱是私人会员。 你不能直接去银行自己拿钱。 银行的出纳就像一种公共方法,可以访问私有财产,即您的钱,您可以通过出纳来操纵您的钱。
cpy(A x)
是类的成员,它可以访问private
字段和方法。
private
关键字限制来自其他类(对象)的意图以访问字段。属于类的任何代码都可以访问其自己的私有成员(字段或方法)。
类可以访问自己的私有数据成员。
这也意味着,如果你有任何函数处理两个或多个实例(this
和作为参数传递的东西),你可以访问对象的私有(和公共)变量/方法
即使对象作为参数传递,私有作用域是否仅限于同一类?
是的,这就是x
访问同一类(即 A 类)中的私有成员i
时发生的情况。
相关文章:
- 是否有一种设计模式或面向对象的基本原则来处理这种共享资源的情况?
- 对"车辆的 vtable"的未定义引用 - 面向对象的编程练习
- 成员功能在面向对象的框架中返回std :: vector.size()的效率
- 以面向对象的方式解析自定义数据包
- 面向对象的编程-C 练习
- 如何使用面向对象的技术在 win32 和 c++ 中创建编辑控件
- C++面向对象的字典程序
- 我在哪里可以找到一些 c++ 中的好例子来研究面向对象的概念
- 面向对象的设计选择
- 我应该移至面向对象的编程(黑匣子)以及如何
- 面向对象的图层
- 创建面向对象的链表时出现编译问题(编译器错误C2664)
- 面向对象的数据设计
- 我试图通过我的方案实现的面向对象的想法是什么?
- 是否所有面向对象的语言都会在内存中创建大量重复信息
- C++ 面向对象的编程异常失败
- C++面向对象的客户端套接字应用程序设计
- 面向对象的编程逻辑
- C++基类中虚函数的面向对象的返回值
- 我试图找到几何平均在c++中使用面向对象的编程