Tag: c + + faq

如何重载std :: swap()

std::swap()被许多std容器(如std::list和std::vector )在sorting和分配时使用。 但是,对于自定义types, swap()的标准实现是非常普遍的,而且效率很低。 因此,通过使用自定义types特定的实现来重载std::swap()可以获得效率。 但是,你怎么能实现它,所以它会被使用的性病容器?

我应该如何编写符合ISO C ++标准的自定义新的和删除操作符?

我应该如何编写符合ISO C ++标准的自定义new和delete操作符? 这是在重载 C ++ FAQ, 运算符重载及其后续操作中重载new和delete的延续, 为什么要replace默认的new和delete运算符呢? 第一部分:编写符合标准的new操作符 第1部分:了解编写自定义new操作符的要求 第2部分:了解new_handler要求 第3部分:了解特定场景要求 第二部分:编写符合标准的delete操作符 实现自定义删除操作 (注意:这是一个Stack Overflow的C ++常见问题解答的入口,如果你想批评在这个表单中提供FAQ的想法,那么在这个开始所有这些的meta上的贴子将是这个地方的答案。那个问题在C ++聊天室中进行监控,常见问题解决scheme首先出现,所以你的答案很可能会被那些提出这个想法的人阅读)。 注意:答案是基于Scott Meyers的“更有效的C ++”和ISO C ++标准的学习。

显式的关键字是什么意思?

有人在C ++中发布了关于explicit关键字含义的另一个问题的评论。 那么,这是什么意思?

types名称后的圆括号与新的有什么不同?

如果“testing”是一个普通的类,是否有任何区别: Test* test = new Test; 和 Test* test = new Test();

为什么在macros中使用明显无意义的do-while和if-else语句?

在许多C / C ++macros中,我看到macros包装的代码看起来像是一个无意义的do while循环。 这里是例子。 #define FOO(X) do { f(X); g(X); } while (0) #define FOO(X) if (1) { f(X); g(X); } else 我看不到在do while什么。 为什么不把它写下来呢? #define FOO(X) f(X); g(X)

迭代器失效规则

什么是C ++容器的迭代器失效规则? 最好以摘要列表格式。 (注意:这是一个Stack Overflow的C ++常见问题解答的入口,如果你想批评在这个表单中提供FAQ的想法,那么在这个开始所有这些的meta上的贴子将是这个地方的答案。那个问题在C ++聊天室中进行监控,常见问题解决scheme首先出现,所以你的答案很可能会被那些提出这个想法的人阅读)。

什么是移动语义?

我刚听完关于C ++ 0x的关于Scott Meyers的软件工程无线电播客采访 。 大部分新function对我来说都是有意义的,现在我对C ++ 0x兴奋不已,除了一个。 我仍然没有得到移动语义 …他们究竟是什么?

定义和声明有什么区别?

两者的意义都不见了。

什么是严格的锯齿规则?

在询问C语言中常见的不确定行为时 ,比起我提到严格的别名规则,灵魂更加开明。 他们在说什么?

未定义,未指定和实现定义的行为

C和C ++中未定义的,未指定的和实现定义的行为有什么区别?