C++派生类对象访问基类的protected成员

时间:2021-11-20 05:27:00

《C++ Primer》上有这么一句话令人费解:派生类如果要访问基类protected成员只有通过派生类对象,派生类不能访问基类对象的protected成员。”而实际上的意思是:
只有在派生类中才可以通过派生类对象访问基类的protected成员。

//只有在派生类中才可以通过派生类对象访问基类的protected成员。
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <numeric>
using namespace std;

class Base
{
protected:
int i;

};

class Derived: public Base
{
public:
void fun(Derived d)
{
d.i = 3;//只有在派生类中才可以通过派生类对象访问基类的protected成员。
}
};

int main()
{
Derived derived;
//derived.i = 3; //只有在派生类中才可以通过派生类对象访问基类的protected成员。
return 0;
}