zoukankan      html  css  js  c++  java
  • 《从缺陷中学习CC++》总结

                从缺陷中学习CC++总结

      从本质上来说,这就是一个CC++的错题集。全书中包括63个问题引发的错误,即书名中的缺陷。共分为10章,每一张还有一个比较经典的小结,个人感觉这本书只需要仔细看一下每一章后面的小结就可以了。

      第一章主要介绍了一些由于基础知识不清楚的原因造成的错误。重点是宏的使用问题还有数据类型之间转换出现的问题。

      第二章主要扯了一下编译的问题,实话说这个不怎么会遇到。

      第三章主要讲了C++库函数使用引发的错误。

      第四章就说了一些逻辑问题,没什么用。

      第五章主要介绍C++对文件操作时出现的几个常见问题。

      第六章讲述C++内存管理问题。

      第七章主要介绍C++多线程编程时出现的几个常见问题。

      第八章讲述C++的异常处理机制,必须会正确使用try~catch。

      第九章讲述了程序中的细节对程序性能的影响。

      第十章通过良好的设计和编写规范代码实现C++程序的跨平台.。

    书中的一些典型的建议如下:

    1.尽量的使用其他(如内敛函数、const)来代替宏(下述三点来自google c++风格指南):

        1--用宏来实现内敛进而提高效率,可以用内敛函数来替代。 

        2--用宏来存储常量,可以用const变量带替代。 

        3--用宏来"缩短"长变量名,可以用引用来替代。

    2.snprintf()函数通常用来代替有安全隐患的sprintf()函数。有关snprintf()函数的信息,参见C++ Reference给出的snprintf的详细说明        (http://www.cppreference.com/wiki/io/c/snprintf)。 

    3.最好使用strcpy()函数等来操作方法c_str()返回的指针。

            比如:最好不要这样: 

              char* c; 

              string s="1234"; 

              c = s.c_str(); 

            正确的用法是: 

              char c[20]; 

              string s="1234"; 

              strcpy(c,s.c_str());

            c_str()返回的是一个临时指针,不能对其进行操作。这样就不存在野指针的问题。

    4.注意memcpy和strcpy的使用区别

    5.在使用string的时候,尽量使用string内部提供的字符串函数来操作string。C++库函数最好的说明文档就是:http://www.cplusplus.com/reference/

    6.自己负责产生的内存空间,自己负责释放。 一般来说,new[]一定要和delete[]对应。

    7.C++最强大的就在于对内存的支配权。所以学好内存的使用和管理。

    最后说两个知识点。

    一:名词Coredump:

      许多程序和操作系统出错时会自动生成一个coredump文件,通常情况下coredmp包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等,即程序的当前状态。我们可以从coredump中分析出错误的原因。

    二:Char转为int和int转化为char的问题

      注意类型的截断和扩展。特别是char, unsigned char, unsigned int, int, short等之类的赋值, 要注意Char转为int时高位符号扩展的问题 。如果必须要进行类型转换的话,建议用c++标准的static_cast<int> 。 

  • 相关阅读:
    如何自动生成参考文献格式
    VS2010+OpenCV 项目生成EXE文件如何在其他电脑上直接运行
    从多核CPU Cache一致性的应用到分布式系统一致性的概念迁移
    【译】为什么永远都不要使用MongoDB Why You Should Never Use MongoDB
    团队技能提升的二三事儿
    从微信朋友圈的评论可见性,谈因果一致性在分布式系统中的应用
    我所认为的软件可靠性的三重境界
    Redis核心原理与实践--事务实践与源码分析
    Redis核心原理与实践--Redis启动过程源码分析
    选择SaaS平台的那些事
  • 原文地址:https://www.cnblogs.com/CHLL55/p/4366884.html
Copyright © 2011-2022 走看看