使用 const 提高函数的健壮性】的更多相关文章

使用 const  提高函数的健壮性 看到 const 关键字,C++程序员首先想到的可能是 const 常量.这可不是良好的条件 反射.如果只知道用 const 定义常量,那么相当于把火药仅用于制作鞭炮.const 更大的 魅力是它可以修饰函数的参数.返回值,甚至函数的定义体. const 是 constant 的缩写, “恒定不变”的意思.被 const 修饰的东西都受到强制保护, 可以预防意外的变动,能提高程序的健壮性.所以很多 C++程序设计书籍建议:“Use const wheneve…
1.如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地改动该指针指向的内存单元,起到保护的作用. 例如:void StringCopy(char *strDest, const char *strSrc);   void OutPutString(const char *str); 2.如果输入参数采用“值传递”,由于函数将自动用实参的拷贝初始化形参,因此即使在函数内部修改了该参数,改变的也只是堆栈上的拷贝而不是实参,所以一般认为不需要用const 修饰. 对于ADT/UDT的参…
如何评论一个开发代码写的好?清晰简洁明了?No,No,一个处女座就可以写出来了,整齐地代码,详细的注释不是代码好的标准,应该说不是最重要的标准.代码写的是否健壮才是检验的重要标准. 代码的健壮性: 当我们测试向开发提出一个bug,问怎么会出现这样一个bug,他们可能会说代码写的不健壮.何为健壮性,健康强壮,抵挡得住测试各种异常场景的测试才为健壮.而真正的大牛追求的就是以较少的代码量来完成逻辑开发,还能保持代码的健壮性.而这样的代码很少见,一般的程序员见到还不一定能看懂. Python函数的健壮性…
写代码之际突然想起了pc-lint这个"古董级"的代码静态分析工具;   下午机房的服务器歇菜了,没法调试游戏,刚好抽出时间来研究一下pc-lint集成在SourceInsight中; 当然百度上也有许多集成的方法,但是经常有某些错误,导致进程无法lint的正常执行; 分3块部分来讲,先说第一块: 一:安装pclint和SourceInsight 安装pclint: 上http://download.csdn.net/detail/u012329294/8280039   或者直接百度…
const 是constant 的缩写,“恒定不变”的意思.被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性.所以很多C++程序设计书籍建议:“Use const whenever you need”. 1.用const 修饰函数的参数 如果参数作输出用,不论它是什么数据类型,也不论它采用“指针传递”还是“引用传递”,都不能加const 修饰,否则该参数将失去输出功能.const 只能修饰输入参数: 如果输入参数采用“指针传递”,那么加const 修饰可以防止意外地…
实验原因 说明如何使用const描述保护类数据不会意外修改. 编译环境 vc6sp6 + win7x64 工程下载 copyConstruction_constMemberFunction.zip   使用非const成员函数,引起的拷贝构造函数报错 class CStudent { /// 常量定义 public: enum {NAME_SIZE_MAX = 64}; /// 构造, 拷贝构造, 析构函数 public: CStudent(); CStudent(const char* pcN…
转载:const放在函数前后的区别 一.const修饰指针 int b = 500; 1.const int * a = & b; 2.int const * a = & b; 3.int * const a = & b; 4.const int * const a = & b; 对于1和2 const 放在*左侧,就是用来修饰指针所指向的变量,即指针指向的是常量. 若a是仓库管理员,b是仓库.即仓库中的货物(*a)不允许改变.但是可修改指针指向或b的值来改变*a. 对于3…
const在函数前与函数后的区别 一   const基础           如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:           int   b   =   500;      const   int*   a   =   &b;              [1]      int   const   *a   =   &b;              [2]      int*   const   a   =   &b;         …
strcpy   函数的原型是: char * strcpy(char * strDest,const char * strSrc);    功能:把从strSrc地址开始且含有NULL结束符的字符串复制到以strDest开始的地址空间,返回指向strDest的指针. 说明:strSrc和strDest所指内存区域不可以重叠且strDest必须有足够的空间来容纳strSrc的字符串. 与strncpy   函数进行对比: strncpy  函数的原型是: char * strncpy( char…
一些成员函数改变对象,一些成员函数不改变对象. 例如: int Point::GetY() { return yVal; } 这个函数被调用时,不改变Point对象,而下面的函数改变Point对象: void Point:: SetPt (int x, int y) { xVal=x; yVal=y; } 为了使成员函数的意义更加清楚,我们可在不改变对象的成员函数的函数原型中加上const说明: class Point { public: int GetX() const; int GetY()…