考虑以下内容
class Base;
class A {
int x;
friend class Base;
};
class Base {
protected:
A a_obj;
public:
Base(){
a_obj.x; // works
}
};
class Derived : public Base {
public:
Derived(){
a_obj.x; // not accessible
}
};
我可以为x设置公共getter和setter,或者将对象设为public,但这并不是首选。假设有一堆派生类,将friend class Derived
添加到class A
中会使代码过于冗长。是否有一种方法来表示"A与Base类及其所有子类为好友关系"?
a_obj
对象执行某个操作并从该操作中获取结果,而不是直接获取x
的值。 - Some programmer dudea_obj
的成员函数执行操作,进行一些计算或其他类似的事情,然后返回结果。不要把类看作简单的容器或成员分组,而是根据某种行为来考虑它们。例如,一个“狗”类有“吠叫”和“进食”(还有其他行为),但您无法访问狗的内部“成员”(例如它有多饱)。 - Some programmer dude