《C++ Primer》上有这么
一句话令人费解:“派生类如果要访问基类protected成员只有通过派生类对象,派生类不能访问基类对象的protected成员。”而实际上的意思是:
只有在派生类中才可以通过派生类对象访问基类的protected成员。 |
01.//只有在派生类中才可以通过派生类对象访问基类的protected成员。
02.#include <iostream>
03.#include <vector>
04.#include <iterator>
05.#include <algorithm>
06.#include <numeric>
07.using namespace std;
08.
09.class Base
10.{
11.protected:
12. int i;
13.
14.};
15.
16.class Derived: public Base
17.{
18. public:
19. void fun(Derived d)
20. {
21. d.i = 3; //只有在派生类中才可以通过派生类对象访问基类的protected成员。
22. }
23.};
24.
25.int main()
26.{
27. Derived derived;
28.// derived.i = 3; //只有在派生类中才可以通过派生类对象访问基类的protected成员。
29. return 0;
30.}