【Effective C++11】5. 实现

Item26 尽量延后变量定义式的出现时间

定义变量(自定义变量)未使用,会承担构造成本和析构成本,考虑以下场景:

  • 如果有异常出现,encrypted 没有被使用,但是会付出构造和析构的成本;
  • 通过默认构造函数对象然后对他进行复制比直接构造指定初值效率差(条款4);
  • 情况3,不仅避免了构造(和析构)无意义对象,还避免了无意义的默认构造;
void encrypt(std::string& s) { //加密部分 }
int MinimumPasswordLength = 8;
std::string encryptPasssword(const std::string& password) {
    // std::string encrypted; // 情况 1
    if (password.length() < MinimumPasswordLength) {
        throw logic_error("Password is too short");
    }
    // std::string encrypted; // 情况2
    // encrypted = password;
    std::string encrypted(password); // 情况3
    encrypt(encrypted); 
    return encrypted;
}

考虑在循环内的场景:

  • 做法A:1个构造函数+1个析构函数+n个赋值函数
    • 当n很大,赋值成本小于构造析构成本,
    • 变量拥有更大的作用域
  • 做法B:n个构造函数+n个析构函数
    • 如果不是上述的条件,应该优先用B
class Widgt {};
void f() {
    // 做法A
    Widgt w;
    for (int i = 0; i < n; i++) {
        w = "取决于i的值";
    }
    // 做法B
    for (int i = 0; i < n; i++) {
        Widgt w("取决于i的值");
    }
}

  • 22
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 《Effective C++ 中文版》是由Scott Meyers所编写的一本关于C++编程的指南。它不仅是C++编程者的必备书籍,也是所有编程人员的经典读物。本书在讲解C++编程过程中,给出了许多实用的技巧和建议,帮助程序员更好地使用C++编写高效、可靠的程序。 本书共包含50个条款,每个条款都包含一个具有实际意义的问题和解决方案。这些解决方案是作者多年编写C++代码的经验总结,结合了C++的最佳实践,旨在帮助读者更好地理解C++的语言特性和语言使用习惯。这些技巧从简单到复杂,由浅入深地介绍了如何编写高效的C++代码。 在本书中,你将学习到: 1. 内存管理技巧。包括如何使用智能指针、如何处理内存泄漏问题等。 2. 类设计和继承技巧。包括如何设计和实现抽象基类、虚函数等。 3. 异常处理和错误处理。包括如何处理异常、如何正确使用异常、如何进行错误处理等。 4. 代码优化和调试技巧。包括如何做好代码优化、如何进行调试、如何实现高效数据结构等。 《Effective C++ 中文版》不仅适用于初学者,也适合有一定经验的C++开发人员参考。它是一本非常实用的、能帮助你更好地理解和掌握C++编程技巧的书籍。无论你是一名编程新手还是有多年经验的专业开发人员,都值得一读。 ### 回答2: 《Effective C++ 中文版》是一本关于C++编程的经典书籍。其中包含了许多有关C++编程的实用技巧,以及注意事项和最佳实践。本书的作者Scott Meyers是一位著名的C++专家,通过本书他在编程技巧和C++语言语法方面给我们提供了很多宝贵的经验。本书主要分为50个章节,每一个章节有自己的主题,涉及面非常广泛,包括了一些比较基础的C++概念,以及一些高级的编程技巧和设计模式的应用。其中一些章节是非常值得注意的,比如说有关内存管理,函数重载以及类设计等等。 通过《Effective C++ 中文版》这本书,读者可以学到很多C++编程的实用技巧,这些技巧在实际开发中非常有用。例如,书中介绍了如何正确使用函数重载,如何避免内存泄漏以及如何正确地设计类等等。此外,这本书对于大家掌握C++的语法和一些编程技巧以及习惯养成等方面也是非常有帮助的。因此,《Effective C++ 中文版》是一本非常值得阅读的C++经典之作,对于C++初学者和专业程序员都是有益的。 ### 回答3: 《Effective C》是一本关于C语言编程的实用指南,旨在帮助读者更加高效地使用C语言进行开发。本书作者为Scott Meyers,是知名的C++编程之父,在本书中他分享了自己多年来在C语言领域的经验和技巧。 本书主要分为四个部分,分别是基础知识、指针、内存管理和高级技巧。第一部分主要介绍C语言的基本语法和特性,包括编码风格、数据类型、流程控制等;第二部分则深入讲解指针的概念和用法,包括指针的语法、指针和数组、指针和函数等;第三部分主要涉及内存管理方面的知识,包括动态内存分配、内存泄漏、内存地址等;第四部分则介绍一些高级技巧,如位操作、函数指针、字符串操作等。 本书着重强调了C语言的“低级别”特性,如指针和内存管理,这正是C语言的优越之处。但同时,这些特性也是导致C语言存在一些常见问题的根源,如内存泄漏、野指针等。因此,本书特别注重这些问题的防范和解决方法,为读者提供了很多实用的技巧和建议。 总之,《Effective C》是一本非常实用和有价值的C语言编程指南。无论是新手还是经验丰富的程序员,都可以从本书中学到很多东西,提升自己的编程水平和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨主任o_o

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值