摘要: C++中内联函数的定义应该放在头文件中 , 如果放在 源文件中 , 那么链接的时候 有 link error 错误 阅读全文
posted @ 2013-06-08 21:37 wowk 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 可变参数 函数 的 定义也是从 C 继承过来的对于可变参数函数来说 , 参数最少也要有 1 个 ,该参数作为第一个参数, 对于函数声明中已经列出的参数而言 , 其类型可以为任何类型定义形式为 : type function( argument1 , ... );例如printf 的定义就是 int printf(const char* , ... );实现可变参数的函数的时候 ,要包含的头文件 为 <stdarg.h> 在C++中就是 <cstdarg>主要用到该头文件中的 三个 宏 和 一个类型, 分别是 : va_start() va_arg() va_end()和 阅读全文
posted @ 2013-06-08 21:34 wowk 阅读(909) 评论(0) 推荐(0) 编辑
摘要: 通过#ifdef XXXDEBUG#endif在程序中插入打桩调试语句编译的时候 加上 -DXXXDEBUG 宏定义选项就OK了 等效于在 main.cpp 的开头加上 #define XXXDEBUG另外, 还有四种非常有用的调试变量可以使用(1)、__FILE__ 当前执行语句所在的文件名(2)、__LINE__ 当前执行语句所在的行(3)、__TIME__ 当前文件被编译的时间(4)、__DATE__ 当前文件被编译的日期(注意 :前后下划线都是两条 )还可以使用 断言 来进行程序调试所谓的断言 就是 利用一个预处理宏 assert( expression )该宏 声称 ex... 阅读全文
posted @ 2013-06-08 19:12 wowk 阅读(312) 评论(0) 推荐(0) 编辑
摘要: C++ 处理异常的 手段通常有一下几种1、通过 throw 抛出异常 , 抛出的异常 将会向上寻找最近匹配 的 catch() 语句块 来处理异常 ,如果 未找到匹配的 catch , 异常将会自动调用 terminate 来终止程序的执行。 在C++中,所有未处理的异常都会 导致调用 terminate 来使程序终止 throw 可以抛出 C++ 标准库 定义的 标准异常 , 也可以抛出自定义的异常 2、通过 try{} catch(){} 语句块来处理异常 try{} 中通常存放的是 可能会发生异常的代码 , catch(异常类型){} 存放的事针对 某种异常 进行处理的代码 c... 阅读全文
posted @ 2013-06-08 18:15 wowk 阅读(309) 评论(0) 推荐(0) 编辑
摘要: mutable 关键字 虽然很少看到 , 但其功能也是比较重要的 , 用mutable关键字修饰的变量 在程序的任何位置 都处于可变状态。就算是在 const 函数中 其值也能被改变例: 1 class Test 2 { 3 public: 4 Test(){a = 0;} 5 public: 6 mutable int a; 7 void func () const{ 8 a = 1000; 9 }10 };11 int main(int argc, char* argv[])12 {13... 阅读全文
posted @ 2013-06-08 16:44 wowk 阅读(176) 评论(0) 推荐(0) 编辑
摘要: C++中 , 除了可以使用C风格的强制转换外 , 还另外定义了 四个用于强制转换的关键字dynamic_cast static_cast const_cast reinterpret_cast (注:reinterpret : 重新解释)dynamic_cast 用于运行时识别 指针或 引用指向的对象static_cast类似于C中的强制类型转换 , 可以将较大的 算数类型赋值给较小的算数类型 , 也可以用于 编译器不提供自动转换时 类型的强制转换 (隐式转换就是使用static_cast 实现的)const_cast添加或删除 类型的 const 属性例:1 char a[]... 阅读全文
posted @ 2013-06-08 16:35 wowk 阅读(213) 评论(0) 推荐(0) 编辑
摘要: C++从C继承了的标准库 , 这就意味着 C 中 可以使用的标准库函数 在C++ 中都可以使用 , 但是需要注意的是 , 这些标准库函数在C++中不再以<xxx.h> 命名 , 而是变成了 <cxxx> 。 例如: 在C中操作字符串的库函数所在的头文件 <string.h> 在C++中要写成 <cstring>(注:虽然 在C++ 中 包含 〈xxx.h〉也没有任何问题, 毕竟C++是兼容C的 , 但是 这样会引起混淆, 让人不知道 某一函数到底是属于C还是C++的 ) 阅读全文
posted @ 2013-06-08 15:09 wowk 阅读(201) 评论(0) 推荐(0) 编辑
摘要: C++中 , 指针相减所得结果的类型为 ptrdiff_t , 他 与 size_t 类型一样,都是与机器相关的类型,所不同的是 size_t是 unsigned ,而 ptrdiff_t是 signed几种指针类型 1 、 const char * p;常量指针顾名思义 : 指向常量的指针 , 也就是说, 不能通过该指针修改其指向的数据的值 2 、 char * const p; 指针常量顾名思义 : 就是指针类型 的 常变量 , 也就是说 , 定义的变量 p 的值不能改变 3 、 const char * const p; 常量指针常量 顾名思义:就是 指向 常量的 指针类型的 ... 阅读全文
posted @ 2013-06-08 15:01 wowk 阅读(203) 评论(0) 推荐(0) 编辑
摘要: C++的 striing 类中 , size()成员函数的返回类型为 string::size_type , 为了程序的可移植性 , 避免用其他类型来代替该类型1 string str("hahahahha");2 string::size_type len = str.size();3 cout<<len<<endl; 阅读全文
posted @ 2013-06-08 14:50 wowk 阅读(232) 评论(0) 推荐(0) 编辑