child 如何通过成员方法访问另一个 child 的受保护成员
How is the child access another child's protected member via member method
这是如何编译的?受保护的变量 d。 child class 方法 works 如何修改 child class 受保护成员变量的另一个实例? child 能否通过成员方法
访问另一个 child 的受保护成员
#include <iostream>
using namespace std;
class Parent
{
public:
void print()
{
cout << d;
}
protected:
int d = 2;
};
class Child : public Parent
{
public:
void works(Child* some_other_child)
{
some_other_child->d = 3;
}
};
int main()
{
Parent *p = new Parent();
Child *c = new Child();
Child *co = new Child();
c->works(co);
co->print();
return 0;
}
protected
和 private
关键字限制哪些 类 可以访问成员变量,而不是哪些 对象 可以访问它。
因此,Child::works()
方法中的代码能够访问任何 Child
对象的受保护 Parent::d
成员变量,因为 Child
是Parent
.
因为Child
class继承自Parent
class,Child
class继承int d
成员变量。 Child
class的构造函数被调用时,会创建int d
成员变量作为Child
class的成员。 Child
中的int d
又是一个protected
成员变量。
然后,如果您调用 Child
class 的方法,它自然可以访问它所拥有的 class 的所有成员。因此,由于 works
方法属于 Child
class,它可以访问 int d
成员变量并允许更改它(如果您不将其设为const方法,如void works(Child* some_other_child) const
,表示该方法不允许改变其class)的任何成员变量。
当您将指针(或引用)传递给 Child
的另一个对象时,因为它是从 Child
的方法中调用的,所以它也可以更改成员,因为它可以访问Child
的成员变量。
这是如何编译的?受保护的变量 d。 child class 方法 works 如何修改 child class 受保护成员变量的另一个实例? child 能否通过成员方法
访问另一个 child 的受保护成员#include <iostream>
using namespace std;
class Parent
{
public:
void print()
{
cout << d;
}
protected:
int d = 2;
};
class Child : public Parent
{
public:
void works(Child* some_other_child)
{
some_other_child->d = 3;
}
};
int main()
{
Parent *p = new Parent();
Child *c = new Child();
Child *co = new Child();
c->works(co);
co->print();
return 0;
}
protected
和 private
关键字限制哪些 类 可以访问成员变量,而不是哪些 对象 可以访问它。
因此,Child::works()
方法中的代码能够访问任何 Child
对象的受保护 Parent::d
成员变量,因为 Child
是Parent
.
因为Child
class继承自Parent
class,Child
class继承int d
成员变量。 Child
class的构造函数被调用时,会创建int d
成员变量作为Child
class的成员。 Child
中的int d
又是一个protected
成员变量。
然后,如果您调用 Child
class 的方法,它自然可以访问它所拥有的 class 的所有成员。因此,由于 works
方法属于 Child
class,它可以访问 int d
成员变量并允许更改它(如果您不将其设为const方法,如void works(Child* some_other_child) const
,表示该方法不允许改变其class)的任何成员变量。
当您将指针(或引用)传递给 Child
的另一个对象时,因为它是从 Child
的方法中调用的,所以它也可以更改成员,因为它可以访问Child
的成员变量。