using 命名空间 std 的顺序;并包括?
我最近看到这段代码被用在一个 C++ 项目的源文件中: using namespace std; #include 忽略所有关于 using namespace std 是否是一个好主意的问题,上…
为什么operator new不强制将参数作为“const size_t”?
没有在任何地方使用下面的东西,但这个问题仍然在我脑海中存在很长时间。 void* operator new (size_t size) { // distort `size` to other value ret…
在 c++0x 中删除 nullptr 仍然安全吗?
在c++03中,很明显删除空指针没有任何效果。事实上,§5.3.5/2 中明确指出: 无论哪种选择,如果delete操作数的值为空指针,则该操作无效。 但是,在 c…
为什么单一虚拟继承不足以解决可怕的钻石问题?
struct B { int i; }; struct D1 : virtual B {}; struct D2 : B {}; // <-- not virtual struct DD : D1, D2 {}; 完成上述编码后,编译器仍然要求 D2…
printf("% .0d",0) 应该打印一个空格吗? printf("%".0d",0) 打印一个加号?
glibc 的 printf("% .0d",0) 打印空格,printf("%+.0d",0) 打印加号,glib printf测试检查此行为。但这是正确的吗?根据标准(7.19.6.1): + 有符号…
为什么基类不会在同一个“auto”中自动推导?宣言?
下面与 auto 相关的错误是可以理解的: auto i = int(), d = double(); // error: inconsistent deduction for ‘auto’ 但是,为什么以下错误会受到…
什么标准条款要求进行左值到右值的转换?
鉴于: int main() { int x = 0; int y = x; // <--- } 有人可以告诉我标准的哪个条款(首选 2003)要求将表达式 x 从 lvalue 转换为 rvalue对象y的初…
C++11 引入了标准化内存模型。这是什么意思?它将如何影响 C++编程?
C++11 引入了标准化内存模型,但这到底意味着什么?它将如何影响 C++ 编程? 这篇文章(作者:Gavin ClarkeHerb 的strong>萨特)说, 内存模型意味着C…
为什么没有标头的不存在是否可以被视为缺陷?
标准库包含一个 标头,该标头(向前)声明包括任何 typedef 的所有流并定义 char_traits 模板,包括专业化。 遗憾的是,没有这样的 标头(向前)声明…
string::在字符串末尾插入
以下两行在 Visual Studio 2005 中执行相同的操作: myString.insert(myString.size(),1,myNewChar); 第一行是否 myString.append(1,myNewChar); 应该…
具有静态存储持续时间的对象中未初始化的指针是否初始化为 NULL 或全零?
出于好奇,并且因为我现在手头没有标准的副本: 给定一个空指针不由全零模式表示的实现,具有静态存储持续时间的对象的未初始化指针成员是否会被初始…
当 return 语句不存在时,为什么没有任何编译器错误?
与 Java 不同,在 C/C++ 中允许: int* foo () { if(x) return p; // What if control reaches here? } 这通常会导致崩溃并且很难调试问题。为什么标…
为什么用“new”分配虚函数时不能取消实现?
struct A { virtual void foo(); // unused and unimplemented virtual void bar () {} }; int main () { A obj; // ok obj.bar(); // <-- added this…