2006年5月14日

函数的重载:语义和功能相似的函数用相同的名字表示,编译器根据不同的参数为不同的函数产生不同的内部标识符 C++函数调用C函数:extern "C"{ } !!并不是函数名相同就是重载,全局函数和类成员函数就不是重载,作用域不同 防止隐式类型转换而导致重载函数调用的二义性 成员函数的重载、覆盖和隐藏 重载的特征overload: (1)具有相同的范围(在同一个类中) (2)函数名字相同 (3)参数不同 (4)virtual关键字可有可无 覆盖的特性overriding: 派生类覆盖基类的函数: (1)范围不同(不在同一个类中) (2)函数名字相同 (3)参数相同 (4)基类必须带virtual关键字 隐藏规则: (1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual 关键字,基类的函数将被隐藏(注意别与重载混淆)。 (2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual 关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。 参数的缺省 只能出现在函数声明中 关键字inline 必须与函数定义体放在一起才能使函数成为内联 定义在类声明之中的成员函数将自动地成为内联函数 (1)如果函数体内的代码比较长,使用内联将导致内存消耗代价较高。 (2)如果函数体内出现循环,那么执行函数体内代码的时间要比函数调用的开销大
posted @ 2006-05-14 21:18 Gerrard 阅读(284) | 评论 (0)编辑 收藏
 
1)内存的几种分配方式: 静态存储区:全局变量和静态变量 栈空间:局部变量,参数 堆分配(动态) 2)常见的内存处理错误以及策略: 1 分配未成功就开始使用 对策:检测指针是否为NULL(判断) ex:assert(p!=NULL)//若P为函数的参数     if(p!=NULL)/if(p==NULL) //判断分配内存是否有效  2 内存分配成功但没初始化(赋初值)  3 内存分配成功但操作越界  4 忘记释放内存而造成内存泄露  5 释放了内存却继续使用它   原因:过多的对象调用      return语句中返回了指向栈空间的指针或其引用,该内存在函数体结束后自动销毁      使用free/delete后没有将指针置NULL产生野指针 3)数组和指针的区别  1 内容的修改:   ex1: char a[]="hello"; //a为字符数组 a[0]='X';    //a的内容可以修改 cout<
posted @ 2006-05-14 15:01 Gerrard 阅读(85) | 评论 (0)编辑 收藏
仅列出标题