相关疑难解决方法(0)

为什么"使用命名空间std"被认为是不好的做法?

我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::coutstd::cin直接代替.

为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?

c++ namespaces using-directives std c++-faq

2486
推荐指数
36
解决办法
78万
查看次数

C++最终是否意味着所有方面都是最终的?

C++ 11添加了最终版.

最后!

我明白final做两件事:

  • 使一个类不可继承.
  • 使(虚拟)函数在类中不可覆盖(在派生类中).

这两者似乎彼此独立.但举个例子如下:

class Foo
{
    public:
    virtual void bar()
    {
        //do something unimportant.
    }
};
class Baz final : public Foo
{
    public:
    void bar() /*final*/ override
    {
        //do something more important than Foo's bar.
    }
};
Run Code Online (Sandbox Code Playgroud)

从上面,我相信Bazfinal的,我应该不是需要指定它的virtual成员函数bar也是final.由于Baz不能继承,覆盖的问题bar超出了范围.不过我的编译VC++ 2015,对此非常安静.目前我还没有对其他任何人进行测试.

如果有人能够对这个话题有所了解,我会很高兴.标准的引用(如果有的话)将非常感激.还请说明我不知道的任何角落案件,这可能导致我的逻辑信念失败.

所以,我的问题是:是否 final class 隐含地暗示其 virtual 功能 final 也是如此?应该是?请澄清.


我之所以这么说是因为final功能符合去虚拟化的要求,这是一个很好的优化.任何帮助表示赞赏.

c++ virtual final c++11

13
推荐指数
2
解决办法
2499
查看次数

标签 统计

c++ ×2

c++-faq ×1

c++11 ×1

final ×1

namespaces ×1

std ×1

using-directives ×1

virtual ×1