【问题标题】:Is it necessary the scope resolution in this case?在这种情况下是否需要范围解析?
【发布时间】:2011-11-25 12:06:52
【问题描述】:

我们是否需要包括范围

baseClass::statmember.methodmember();

当我们从派生类的方法内部调用它时,调用已继承的基类的静态成员? 我在其他人编写的代码中看到它,我尝试修改它并且它也可以编译而不包括范围

derivedclass::methodDerived() {
    statmember.methodmember();
};

如果没有必要,为什么程序员在对成员的所有调用中都包含scope::?是不是提醒了所有对象中静态成员的唯一性?

或者我错了,代码可能会给出不同的结果?

【问题讨论】:

  • 你能发布一些实际代码吗?不清楚你在说什么。
  • 嗯,谢谢你的回答,但我确实不能,我认为这是禁止的。开发者的隐私政策。我会尝试完善这个问题。
  • 模板可能需要。
  • 基类不是模板。谢谢
  • 否:但是如果基类不是,派生类可以是模板吗?也许覆盖构造函数?听起来我很难管理。

标签: c++ inheritance static member


【解决方案1】:

我猜是因为以下是允许的:

class Base
{
public:
   static void foo(){}
};
class Derived:public Base
{
public:
   static void foo(){}
};

要么这样,要么为了可读性。有时,仅仅因为它没有必要并不意味着它没有用(即使这种用途是可读性,这是一个大问题)。

【讨论】:

    【解决方案2】:

    仅当基类和派生类具有同名的函数并且您想区分它们时才需要。

    否则就不需要了。

    【讨论】:

    • 哦,这就是我所相信的。谢谢你!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多