C/C++
aigoleague
宅男,技术上还有很大的欠缺
展开
-
C++类型转换总结
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。const_cast,字面上理解就是去const属性。static_cast,命名上理解是静态类型转换。如int转换成char。dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类转载 2013-01-17 16:04:17 · 321 阅读 · 0 评论 -
指针函数与函数指针的区别
一、指针函数:指返回值是指针的函数 类型标识符 *函数名(参数表) int *f(x,y);首先它是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。注意指针函数与函数指针表示方法的不同,千万不要混淆。最简单的辨别方式就是看函数名前转载 2013-02-28 16:29:49 · 2811 阅读 · 0 评论 -
boost智能指针
boost::scoped_ptr和std::auto_ptr非常类似,是一个简单的智能指针,它能够保证在离开作用域后对象被自动释放。下列代码演示了该指针的基本应用:#include #include #include class implementation{public: ~implementation() { std::cout void转载 2013-03-25 22:50:29 · 535 阅读 · 0 评论 -
C++的#和##
# 和 ## 操作符是和#define宏使用的. 使用# 使在#后的首个参数返回为一个带引号的字符串. 例如, 命令 #define to_string( s ) # s将会使编译器把以下命令 cout 理解为 cout 使用##连结##前后的内容. 例如, 命令 #define concatenate( x, y ) x ## y...int xy = 10;转载 2013-03-26 10:37:08 · 502 阅读 · 0 评论 -
关于set_new_handler
当运算符new找不到足够大的连续内存块来为对象分配内存时将会发生什么?一个称为 new-handler的函数被调用。对于new-handler的缺省动作是抛出一个异常。然而,如果我们在程序里用堆分配,至少要用“内存已用完”的信息代替 new-handler,并异常中断程序。用这个办法,在调试程序时会得到程序出错的线索。通过包含NEW. H,然后以我们想装入的函数地址为参数调用set_new转载 2013-03-25 22:51:23 · 463 阅读 · 0 评论 -
C++异常机制
一、 概述C++自身有着非常强的纠错能力,发展到如今,已经建立了比较完善的异常处理机制。C++的异常情况无非两种,一种是语法错误,即程序中出现了错误的语句,函数,结构和类,致使编译程序无法进行。另一种是运行时发生的错误,一般与算法有关。关于语法错误,写代码时心细一点就可以解决。C++编译器的报错机制可以让我们轻松地解决这些错误。第二种是运行时的错误,常见的有文件打开失败、数组下标溢出、转载 2013-03-25 23:08:48 · 521 阅读 · 0 评论