
c++
文章平均质量分 69
liuxialong
这个作者很懒,什么都没留下…
展开
-
临时对象不能被绑定到非const引用参数上====》扩展到临时对象问题
概括一下:不能把临时对象作为实参传给非const引用。例如: void conv(string &str){} int main(){ conv("dasd");//这里错了,编译器自动生成一个string(“dasd”)临时对象,不能将该临时对象传给非const引用} 因此,需要将其改为void conv(string str){} /原创 2011-06-12 17:37:00 · 5023 阅读 · 1 评论 -
如何定义宏,返回数组的大小,并可以检查传入的参数是否为数组
问题描述: 通常我们会定义数组,如int a[100]; 然后再写别的代码,然后在程序不知道的哪个位置,传入了一个a 我觉得他可能是个数组,但不确定,而且我还想知道a这个数组的大小。 通常我们会这么做sizeof(a)/sizeof(a[0]) 但是这样做有问题,如果a原创 2011-09-21 16:27:32 · 2826 阅读 · 0 评论 -
【effective c++】C++构造函数、析构函数与抛出异常
问题:构造函数可以抛出异常么?析构函数可以吗?从语法上来说,构造函数和析构函数都可以抛出异常。但从逻辑上和风险控制上,构造函数可以,析构函数不推荐抛出异常。(参见effective c++ 条款08 别让异常逃离析构函数)1、构造函数可以抛出异常:无论何时,从原创 2011-07-05 17:01:17 · 4854 阅读 · 0 评论 -
gcc -l 链接共享库(动态/静态共享库)
我们通常把一些公用函数制作成函数库,供其它程序使用。函数库分为静态库和动态库两种:静态库:在程序编译时会被链接到目标代码中,程序运行时将不再需要它。动态库:在程序编译时并不会被链接到目标代码中,而是在程序运行时才被加载的,因此程序运行时还需要动态库存在。静态库转载 2011-07-04 16:35:26 · 1775 阅读 · 0 评论 -
C++ 初始化类的常量数据成员、静态数据成员、常量静态数据成员
有关const成员、static成员、const static成员的初始化: 1、const成员:只能在构造函数后的初始化列表中初始化2、static成员:初始化在类外,且不加static修饰3、const static成员:类只有唯一一份拷贝,且数值不能改变。因此,可以在类中声明处初始化,也可以像static在类外初始化 示例:#include using std原创 2011-06-28 16:35:00 · 13663 阅读 · 1 评论 -
C++必知必会 读书笔记2
条款25 实参相依的查找当查找该调用何种函数时,编译器会到实参所在的命名空间中查找函数,使之成为候选调用函数之一 条款26 操作符函数查找直接调用操作符时,遵循普通的函数查找规则;使用中缀语法调用操作符时,编译器也会考虑实参所在那个的命名空间 两个候选------实参所在的命名空间 | ---------调用函数所在的命名空间例子原创 2011-06-21 09:58:00 · 1302 阅读 · 0 评论 -
C++必知必会 读书笔记3
条款32 禁止复制访问修饰符(public、protected、private)可用于表达和执行高级约束技术。常见的一种约束技术就是限制对象的复制行为。做法是,将复制构造函数、复制赋值操作符声明为private,同时不提供定义。class NoCopy{private: NoCopy(const NoCopy&);//禁止copy constructor NoC原创 2011-06-22 10:48:00 · 1271 阅读 · 1 评论 -
基类派生类构造析构函数调用顺序、成员初始化和销毁顺序
#include #include #include /*构造和初始化顺序:1、基类的类成员初始化2、基类构造函数3、派生类的类成员初始化4、派生类构造函数销毁顺序:1、子类析构函数2、子类的类成员析构、销毁3、派生类析构函数4、派生类的类成员析构、销毁这两个顺序,可以用入栈、出栈操作来理解~其顺序刚好相反*/using namespace std;class c{public: c原创 2011-06-19 16:26:00 · 4554 阅读 · 2 评论 -
c++中的set_new_handler和new_handler
详细可参考 《effective c++》第三版 条款49:了解new_handler的行为相关链接:http://blogold.chinaunix.net/u/3374/showart_1849816.html 当operator new申请一个内存失败的时候,它会进行如下的处理步骤: 1、如果存在客户指定的处理函数,则调用处理函数(new_handler),如果不存原创 2011-06-13 10:20:00 · 12113 阅读 · 2 评论 -
算法题总结+解法
原题转载自:http://www.cnblogs.com/xwdreamer/archive/2011/12/13/2296910.html 解法为原创,红色字体标出。 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不能创建任何新的结点,只调整指针的指向。 10 / \ 6 14原创 2014-12-10 13:01:42 · 4336 阅读 · 0 评论