随笔分类 - effective modern c++ 翻译
effective modern c++ 的翻译
摘要:本文翻译自《effective modern C++》,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" Item 26已经解释了,不管是对全局函数还是成员函数(尤其是构造函数)而言,对universal引用的重载会导致一系列的问题。到目前为止,我也已经给出了好
阅读全文
摘要:本文翻译自《effective modern C++》,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 如果你需要写一个以名字作为参数,并记录下当前日期和时间的函数,在函数中还要把名字添加到全局的数据结构中去的话。你可能会想出看起来像这样的一个函数: std:
阅读全文
摘要:本文翻译自《effective modern C++》,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 右值引用只能绑定那些有资格被move的对象上去。如果你有一个右值引用类型的参数,你就知道这个被绑定的对象可以被move: class Wdiget{ Wid
阅读全文
摘要:本文翻译自《effective modern C++》,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 古人曾说事情的真相会让你觉得很自在,但是在适当的情况下,一个良好的谎言同样能解放你。这个Item就是这样一个谎言。但是,因为我们在和软件打交道,所以让我们避
阅读全文
摘要:本文翻译自《effective modern C++》,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 根据std::move和std::forward不能做什么来熟悉它们是一个好办法。std::move没有move任何东西,std::forward没有转发任
阅读全文
摘要:本文翻译自《effective modern C++》,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 如果你曾经同过久的编译时间斗争过,那么你肯定对Pimpl("point to implementation",指向实现)机制很熟悉了。这种技术让你把类的数据
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 让我们先从std::make_unique和std::make_shared的对比开始吧。std::make_shared是C++11的部分,但是,不幸的是,s
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 矛盾的是,我们很容易就能创造出一个和std::shared_ptr类似的智能指针,但是,它们不参加被指向资源的共享所有权管理。换句话说,这是一个行为像std::
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 使用带垃圾回收机制语言的程序员指出并嘲笑C++程序员需要遭受防止资源泄漏的痛苦。“多么原始啊”他们嘲笑道,“20世纪60年代的Lisp留下的备忘录你还不记得了吗
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 当你需要一个智能指针的时候,std::unique_ptr通常是最接近你需求的那一个。默认情况下,这么假设是很合理的:std::unique_ptr和原始指针的
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" C++的官方说法中,特殊成员函数是C++愿意去主动生成的。C++98有4个这样的函数:默认构造函数,析构函数,拷贝构造函数,拷贝operator=。当然,这里有
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 如果我们在数学领域里工作,我们可能会发现用一个类来表示多项式会很方便。在这个类中,如果有一个函数能计算多选式的根(也就是,多项式等于0时,各个未知量的值)将变得
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 如果说C++11中有什么新东西能拿“最佳困惑奖”的话,那肯定是constexpr了。当把它用在对象上时,它本质上是const的加强版,但是把它用在函数上时,它将
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 在C++98中,异常规范(exception specifications)是一个不稳定因素。你必须总结出一个函数可能会抛出的异常类型,所以如果函数的实现被修改
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" STL中的const_iterator等价于pointers to const(指向const值的指针)。它们指向的值不能被修改。使用const的标准做法是,每
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" C++中的面向对象编程总是围绕着类,继承,以及虚函数。这个世界中,最基础的概念就是,对于一个虚函数,用派生类中的实现来重写在基类中的实现。但是,这是令人沮丧的,
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 如果你为其他开发者提供代码,并且你想阻止他们调用一个特定的函数,你通常不会声明这个函数。函数不声明,函数就不会被调用。太简单了!但是有时候C++会帮你声明函数,
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 一般情况下,在花括号中声明一个name(包括变量名,函数名),这个name的可见性会被限制在花括号的作用域内。对于在C++98风格的enum中声明的enum成员
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 我确信我们都同意使用STL容器是一个好主意,并且我希望在 Item 18 中能让你相信使用 std::unique_ptr 也是一个好主意,但是我猜想,我们中没
阅读全文
摘要:本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误。谢谢! 博客已经迁移到 "这里啦" 先让我们看一些概念:字面上的 0 是一个 int ,不是一个指针。如果C++发现 0 在上下文中只能被用作指针,它会勉强把 0 解释为一个null指针,但这只是
阅读全文