我已经告诉别人,编写using namespace std;代码是错误的,我应该用std::cout和std::cin直接代替.
为什么被using namespace std;认为是不好的做法?是低效还是冒着声明模糊变量(与名称std空间中的函数具有相同名称的变量)的风险?它会影响性能吗?
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)
从上面,我相信Baz是final的,我应该不是需要指定它的virtual成员函数bar也是final.由于Baz不能继承,覆盖的问题bar超出了范围.不过我的编译VC++ 2015,对此非常安静.目前我还没有对其他任何人进行测试.
如果有人能够对这个话题有所了解,我会很高兴.标准的引用(如果有的话)将非常感激.还请说明我不知道的任何角落案件,这可能导致我的逻辑信念失败.
所以,我的问题是:是否 final class 隐含地暗示其 virtual 功能 final 也是如此?应该是?请澄清.
我之所以这么说是因为final功能符合去虚拟化的要求,这是一个很好的优化.任何帮助表示赞赏.