像许多人一样,我一直在尝试C + 11带来的不同功能.我最喜欢的一个是"基于范围的循环".
我明白那个:
for(Type& v : a) { ... }
Run Code Online (Sandbox Code Playgroud)
相当于:
for(auto iv = begin(a); iv != end(a); ++iv)
{
Type& v = *iv;
...
}
Run Code Online (Sandbox Code Playgroud)
而这begin()只是返回a.begin()标准容器.
但是,如果我想让我的自定义类型"基于范围的循环" - 意识到什么?
如果我只是专注begin()和end()?
如果我的自定义类型属于命名空间xml,我应该定义xml::begin()还是std::begin()?
简而言之,这样做的准则是什么?
在C++中哪种命名约定更可取?该下划线方法或驼峰方法?我用Java编写了一段时间,我已经习惯了camelCase命名约定.哪个更普遍?
此外,在定义类时,是否有私有/公共/受保护变量/方法的首选顺序?
朋友通常到底放在一边吗?
那么typedef,它们是否位于类定义的顶部?