【发布时间】:2020-10-31 13:50:12
【问题描述】:
在使用 C 编程多年后,我正在使用 C++ 迈出第一步。
我试图掌握“受保护”的概念,网上有很多材料解释了protected 变量是什么以及它们的用途。然而,当我尝试编写一个超级基本的示例时,只是为了让我的手弄脏 C++,我遇到了一个错误:
错误:“int parent::protected1”在此上下文中受到保护
因此,我们将不胜感激。
class parent {
public:
int getProtected() { return protected1; }
protected:
int protected1;
};
class child: public parent { };
int main()
{
child ch;
cout << ch.protected1 << endl; // error: 'int parent::protected1' is protected within this context
cout << ch.getProtected() << endl; // OK
return 0;
}
到处都说protected 变量只能在继承层次结构中访问。如果是这样的话,我试图理解 - 我在这里做错了什么?
“受保护变量”的概念还没有真正深入人心。private 很好理解,因为私有变量属于子实例,因此只能由子方法访问。但是,如果孩子可以访问父级的protected 变量,是否意味着必须先实例化父级,然后孩子才能访问此protected 变量?
【问题讨论】:
-
您在这里尝试使用
protected变量的方式等同于它是private。要像这样访问它,它需要是public。 -
建议:不要在没有一些好的参考资料的情况下从 C 迁移到 C++。考虑到语言通常是多么相似,行为上的差异可能会非常不和谐。两种语言的意识形态截然不同,因此即使行为相同,在 C++ 中做某事的最佳方式也可能完全不同。我有 3 年的真正糟糕的代码,我仍在寻找和清理过渡时期的代码,然后我才开始阅读一些好书,学到的不仅仅是语法差异。过渡的时间越短,你的生活就会越好。
标签: c++ inheritance syntax-error protected