许多C++书籍都包含这样的示例代码......
std::cout << "Test line" << std::endl;
Run Code Online (Sandbox Code Playgroud)
......所以我也一直这样做.但我已经看到很多来自像这样的开发人员的代码:
std::cout << "Test line\n";
Run Code Online (Sandbox Code Playgroud)
是否有技术上的理由偏爱另一个,或者仅仅是编码风格的问题?
C++的一个特性是能够创建未命名(匿名)命名空间,如下所示:
namespace {
int cannotAccessOutsideThisFile() { ... }
} // namespace
Run Code Online (Sandbox Code Playgroud)
您会认为这样的功能是无用的 - 因为您无法指定命名空间的名称,所以无法从外部访问其中的任何内容.但是这些未命名的命名空间可以在它们创建的文件中访问,就好像你有一个隐含的using子句.
我的问题是,为什么或何时使用静态函数会更好?或者他们基本上是两种做同样事情的方式?
有没有人曾经使用过C++的"贴牌新品"?如果是这样,那该怎么办?在我看来,它只对内存映射硬件有用.
我试图禁用警告C0321("在单行上多个语句" - 我经常if在同一行上放置短单行结果的语句),在Pylint 0.21.1中(如果重要的话:到0.20. 1,常见的0.50.3,Python 2.6.6(r266:84292,2010年9月15日,16:22:56)).
我已经尝试添加disable=C0321Pylint配置文件,但Pylint仍坚持报告它.该行的变化(如disable=0321或disable=C321)被标记为错误,因此Pylint 确实正确识别该选项,它只是忽略它.
这是一个Pylint错误,还是我做错了什么?有没有办法解决?我真的想摆脱一些噪音.
这是一个好奇的.我有一个A类.它有一个B类项目,我想在A的构造函数中使用初始化列表初始化,如下所示:
class A {
public:
A(const B& b): mB(b) { };
private:
B mB;
};
Run Code Online (Sandbox Code Playgroud)
有没有办法捕获mB的拷贝构造函数可能在使用初始化列表方法时抛出的异常?或者我是否必须在构造函数的大括号中初始化mB才能获得try/catch?
我一直听到人们抱怨C++没有垃圾收集.我还听说C++标准委员会正在考虑将其添加到该语言中.我担心我只是没有看到它的意义...使用智能指针的RAII消除了它的需要,对吧?
我对垃圾收集的唯一经验是在几台便宜的80年代家用电脑上,这意味着系统每隔一段时间就会冻结几秒钟.我确信它从那时起已有所改善,但正如你可以猜到的那样,这并没有让我对此持高度评价.
垃圾收集为经验丰富的C++开发人员提供了哪些优势?
我查看了Named Parameter Idiom和Boost :: Parameter库.每个人有什么优势?是否有充分的理由总是选择其中一个,或者在某些情况下每个人都可能比另一个好(如果是的话,在什么情况下)?
几乎所有代码示例代码都忽略了错误处理(因为它"混淆了示例代码正在解决的问题").我的编程知识主要来自书籍和网站,你很少在那里看到任何错误处理,更不用说好东西了.
哪些地方可以看到C++错误处理代码的好例子?特定的书籍,特定的开源项目(最好具有要查看的文件和功能)以及特定的网页或网站都将被感激地接受.
我经常使用const对象的指针,就像这样......
const int *p;
Run Code Online (Sandbox Code Playgroud)
这只是意味着您无法更改p指向的整数p.但是我也看到了const指针的引用,这样宣称......
int* const p;
Run Code Online (Sandbox Code Playgroud)
据我所知,这意味着指针变量本身是不变的 - 你可以改变它整天指向的整数,但你不能指出其他东西.
有什么可能的用途?
c++ ×9
boost ×1
boost-asio ×1
c ×1
c++-faq ×1
c++11 ×1
coding-style ×1
const ×1
exception ×1
iostream ×1
namespaces ×1
new-operator ×1
pylint ×1
python ×1