为什么没有标头的不存在是否可以被视为缺陷?
标准库包含一个 标头,该标头(向前)声明包括任何 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…
这个例子会导致未定义的行为吗?
可能的重复: 未定义的行为和序列点 变量i更改了两次,但是下一个示例会导致未定义的行为吗? #include int main() { int i = 5; std::cout << "befo…
C++11 中 std::string 总是以 null 结尾吗?
Herb Sutter 在其网站上的 2008 年帖子中指出: 出于与并发相关的原因,有一项积极的提案要求在 C++0x 中进一步加强这一点,并要求空终止,并可能禁止…
为什么 std::swap 移至 ?
为什么将 std::swap 移至 C++11 的 标头? N3290 C.2.7 说: 17.6.3.2 对原始功能的影响:函数交换移至不同的标题 基本原理:删除对交换的依赖。 对原…
使用点之后模板函数的特化会破坏编译
考虑下一个示例: #include template void foo(); int main(int argn, char* argv[]) { foo(); } template<> void foo() { std::cout<<1<
初始化器到底什么时候被临时销毁?
我今天构建了这个实验,在回答了一些问题之后, struct A { bool &b; A(bool &b):b(b) { } ~A() { std::cout << b; } bool yield() { return true; } …
什么时候我们需要有一个默认构造函数?
我的问题很简单。什么时候我们需要有一个默认构造函数? 请参考下面的代码: class Shape { int k; public: Shape(int n) : k(n) {} ~Shape() {} }; c…
兼容的 Java 实现可以不包含所有标准库吗?
我正在致力于用 JavaScript 编写 JVM 的实现,这意味着用 JavaScript 为标准库编写大量本机代码。然而,标准库中有大量的类仅由少数程序使用,并且尝…
标准库分配器指针类型的要求
我正在尝试编写一个四叉树稀疏矩阵类。简而言之,quadtree_matrix 是 quadtree_matrix 的零矩阵或四元(ne, nw, se, sw) >。 我最终想测试不同的分配方…
执行memcpy(0,0,0)是否保证安全?
我不太熟悉 C 标准,所以请耐心等待。 我想知道标准是否保证 memcpy(0,0,0) 是安全的。 我能找到的唯一限制是,如果内存区域重叠,则行为未定义......…