继承的C ++范围解析用法

皮特

最近,我偶然发现了两种不同的方法来表示派生类中基类的变量。我知道这是一个主观问题,但我想听听以下两种不同形式的语法的论点...

版本1:

// in some code in the derived class...
base_class_member_variable_ = 0xBEEF;

版本2:

// in some code in the derived class...
MyBaseClass::base_class_member_variable_ = 0xBEEF;

此外,当基类位于其他名称空间中时,是版本2的扩展:

// in some code in the derived class...
base_namespace::MyBaseClass::base_class_member_variable_ = 0xBEEF;

我想知道如果未在派生类中声明/定义变量,则明确声明变量的来源是否有意义。两种版本都可以编译,因此在这里我们只讨论样式。

我了解此主题非常主观。但是,我实际上是在尝试改善我的编码实践,而目前的职位没有接触具有C ++经验的高级工程师。在此先感谢您的帮助。

戴夫·里尔顿(Dave Lillethun)

所有额外的范围界定材料都只是明确说明了编译器无论如何能够推断出什么。因此,除非有一个特别模棱两可的案例,否则无需将所有范围界定的东西放在那里。

至于最好的样式,它可以帮助其他人更好地理解代码……我将避免这种情况,因为它很危险地接近于提出无法支持的观点。但是,我要说的是,我通常看到的是:1)人们使用的作用域修饰符不超过消除歧义所必需的范围,以及2)人们经常有关于如何引用成员变量的编码标准(例如命名约定)到。例如,它们可以以前缀“ m_”开头所有成员变量,或者每次引用成员变量时都可以使用“ this->”。当然,并不是每个人都以这种方式做事,但是在我看来,这是相对普遍的做法。

就是说,如果您是一个人工作,那么您可以为自己做任何事情。另一方面,如果您在一个大型小组中工作,则应找出该小组的编码样式约定,然后遵循这些约定。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章