在命名空间中定义函数还是限定函数
Define a function inside a namespace or qualified?
我在我们的代码库中看到了两种样式。简单的问题:你更喜欢什么?
void
someNsName::someFunc( int a, int b )
{/*...*/}
void
someNsName::someOtherFunc( int c )
{/*...*/}
或
namespace someNsName {
void
someFunc( int a, int b )
{/*...*/}
void
someOtherFunc( int c )
{/*...*/}
} // NS someNsName
我个人更喜欢后者,尤其是当你必须从someNsName
获得很多资格时。但是还有更多的原因吗?
两者之间最大的区别是函数不能首先由限定名声明。
// header
namespace foo {
void bar(int);
}
// implementation
namespace foo {
void bar(long) {
}
}
我在论据清单上犯了一个错误。它声明了一个重载,而不是我想要的函数。只有在链接过程中才会发现问题。这还不错,但实际弹出可能还需要一些时间。我是否将实现写成
void foo::bar(long) {
}
编译实现文件时,这将是一个即时的编译器错误。之前在foo
中没有声明这样的函数,所以我无法定义它
对于长名称空间列表,可以始终执行
namespace impl = some::other::ns;
void impl::bar() {}
我认为这是两种方法之间最重要的区别。但同样,两种风格都有(不同的(优点,所以只要我们一致,任何一种都可以。
相关文章:
- 不同翻译单元中不可重载的非内联函数定义
- Visual Studio中的函数声明和函数定义问题
- 编写代码时C++出现错误:错误 1 错误 C2601:'circle':本地函数定义是非法的
- 具有enable_if外部类原型的模板类构造函数定义
- 类的前向声明之后的类成员函数定义,在类声明之前
- 为函数定义符号不明确的指针参数
- C++模板专用化 - 无法匹配函数定义
- 错误:在第 6 行'{'标记之前,此处不允许使用函数定义
- 找不到 #define 的函数定义
- 根据类型特征更改函数定义?
- 将抽象基类中的所有纯虚函数定义为 varaidaic 模板
- 命名空间更改函数定义
- "Type&"与C++函数定义中的"Type*"
- C++:为什么允许在另一个函数中声明函数,而不允许在函数定义中声明?
- 如何从 C++ 中的现有模板函数定义新函数
- 私有在函数定义/实现的返回值范围内是什么意思 (c++)?
- 越界成员函数定义是否需要一个完全限定的类名,直到全局范围
- 为什么c++允许成员函数定义中实例的私有成员访问
- Qt基类函数定义
- C++函数定义中参数列表后面额外一对括号的含义