- 博客(11)
- 收藏
- 关注
原创 《Effective C++》条款08
条款08:别让异常逃离析构函数 考虑如下代码:class Test{ public: ~Test(){...} //假设这个析构函数会抛出一个异常;};void dosomething(){ vector<Test> v; ... } //v在这里自动销毁当 v被销毁,v内所有Te
2017-10-26 16:49:48 311
原创 《Effective C++》条款07总结
条款07 为多态基类声明virtual析构函数 1、带多态性质的基类应该声明一个virtual析构函数,如果析构函数非虚的化往往会造成派生类对象没有被销毁导致资源泄露。如果类带有任何virtual函数,它就应该拥有一个virtual析构函数。 2、class设计目的如果不是为了基类使用或是不是为了具备多态性,就不该声明成virtual析构函数
2017-10-25 17:23:30 366
原创 《Effective C++》条款06
条款 06:若不想使用编译器自动生成的函数,就该明确拒绝 对于某些对象他们是独一无二,对他们的拷贝没道理,怎么可以复制独一无二的东西呢?例如声明类Test:class Test{...};Test obj1; //obj1是独一无二的Test obj2(obj1); //企图拷贝obj1---错误,不应该通过编译Test obj3;obj3=obj1;
2017-10-20 11:35:12 226
原创 《Effective C++》条款05
条款05:了解C++默默编写并调用了哪些函数 当你写了如下的一个空类的时候:class Test{};其实编译器默默为你提供了以下一些函数,就相当于你写了如下的代码:class Test{public: Test(); //默认构造函数 Test(const Test &right); //拷贝构造函数 ~Test(); //析构函数(编译器产生的析构
2017-10-19 17:33:38 262
原创 《Effective C++》条款04总结
条款04:确定对象使用前已被初始化class Test{private: int x; float y;};...Test obj;其中,obj的成员变量(x,y)有时候被初始化,有时候不被初始化。读取未初始化的值会导致一些不明确的行为,有时候可能会导致你的程序终止运行。 处理方法:永远在使用对象之前先将它初始化。 1、对于内置类型,采用手工方式进行完成,如下所示:in
2017-10-19 15:02:46 319
原创 《Effective C++》条款03总结
条款03:尽可能的使用const const变量和对象:const int data=初始值;//定义的时候必须初始化;const 类类型 对象; //const对象只能调用const成员函数 const指针:const int *p; //指针所指物为常量,不可修改,但指针可以重新指向。int* const p;//指针本身是常量,不可重新指向,但指针所指的内容可以修改。c
2017-10-17 15:08:43 268
原创 《Effective C++》02总结
条款02:尽量以const、enum、inline替换#define 该条款换另一种说法是:宁使用编译器也不使用预处理器。原因在于:#define不被视为语言的一部分。例如:#define DATA 13其中,DATA从来没被编译器所看见,在预处理的过程中所有的DATA都被替换成了13,于是DATA从来没有记录在符号表内。当程序出在13这里出现错误的时候,错误信息只会提示13有错误而不会提到DAT
2017-10-17 14:28:43 180
原创 GDB常用命令
GDB主要的功能和命令: a. 在程序中设置断点,当程序运行到断点处暂停; b. 打印变量的值; c. 单步执行; d. 可以跟踪进入函数里面和从函数中退出; d. 查看线程、函数堆栈信息; 常用命令如下: 命令 | 简写 | 含义 list | l |列出源代码 break | b | 设置断点 print | p | 打印变量的值 continue | c | 继续运行
2017-10-09 17:02:13 236
原创 文章标题
编程题目描述:数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。
2017-09-05 11:15:00 174
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人