随笔分类 - C++
1
map erase iterator
摘要:错误写法: 这样会导致程序行为不可知。因为map是关联容器,对于关联容器来说,如果某一个元素已经被删除,那么其对应的迭代器就失效了,不应该再被使用;否则会导致程序无定义的行为。 正确写法1(STL推荐写法): 使用删除之前的迭代器定位下一个元素。逻辑上来说是在for里做++和m.erase(it++
阅读全文
多态
摘要:1、概念-什么是多态对象在不同时刻表现出来的不同状态。2、针对引用类型的理解编译期间状态和运行期间状态不一样。比如: Person p = new Person();//第一行 p = new Man();//第二行 p = new Woman();//第三行 p在第一行和第二行的状态是不一样的,在
阅读全文
volatile
摘要:volatile的作用是: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。 一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在
阅读全文
public && protected && private
摘要:http://www.cnblogs.com/BeyondAnyTime/archive/2012/05/23/2514964.html 1、public继承不改变基类成员的访问权限。 2、private继承使得基类所有成员在子类中的访问权限变为private。 3、protected继承将基类中p
阅读全文
class && struct
摘要:http://blog.csdn.net/yuliu0552/article/details/6717915 struct可以包含成员函数,可以继承,可以实现多态。 struct为数据结构,class为 区别: 1. 默认访问权限 struct为public,class为private。 2. 默认
阅读全文
静态库 && 动态库
摘要:http://weihe6666.iteye.com/blog/1100065 http://www.cnblogs.com/skynet/p/3372855.html 静态库: 在链接阶段,将汇编生成的目标文件.o与引用到的库一起链接打包到可执行文件中。 静态库对函数库的链接是放在编译时期完成的。
阅读全文
#define && const
摘要:(1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。 (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查,仅仅是展开。 const常量有具体的类型,在编译阶段会执行类型检查。 (3) 存储方式不同 define宏仅仅是展开,有多少地方使
阅读全文
单例模式
摘要:单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。 动机: 对于系统中的某些类来说,只有一个实
阅读全文
static
摘要:http://blog.csdn.net/hackbuteer1/article/details/7487694 C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。一、面向过程
阅读全文
拷贝构造函数
摘要:http://blog.csdn.net/lwbeyond/article/details/6202256 一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子:
阅读全文
多态性&& 虚函数 && 抽象类
摘要:http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/11/2134673.html 多态性 http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/11/2134673.html 多态性 指相同对象收到不同消息或
阅读全文
map和unordered_map
摘要:1、boost::unordered_map, 它与 stl::map的区别就是,stl::map是按照operator<比较判断元素是否相同,以及比较元素的大小,然后选择合适的位置插入到树中。所以,如果对map进行遍历(中序遍历)的话,输出的结果是有序的。顺序就是按照operator< 定义的大小
阅读全文
C/C++中 malloc和new区别
摘要:1. malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。 new 是个操作符,和什么"+","-","="……有一样的地位。 malloc是个分配内存的函数,供你调用的。 new 是一个操作符,可以重
阅读全文
sort中的比较函数compare
摘要:sort中的比较函数compare要声明为静态成员函数或全局函数,不能作为普通成员函数,否则会报错: invalid use of non-static member function 因为:非静态成员函数是依赖于具体对象的,而std::sort这类函数是全局的,因此无法在sort中调用非静态成员函
阅读全文
C++ string类与scanf和printf
摘要:string要用cin和cout输入和输出。 如果一定要用scanf和printf的话,格式为: s.resize(20);scanf("%s", &s[0]); printf("s=%s\n", s.c_str());
阅读全文
不能将Lnode * 类型的值分配到Lnode * 类型的实体
摘要:typedef struct { int data; struct Lnode *next;}Lnode,*LinkList; 这个地方有点问题,因为结构体定义中出现了struct Lnode但 Lnode这个名字却是在下一行出现的,于是把编译器弄懵了。改成这样:typedef struct tag
阅读全文
二维数组malloc
摘要://WC[K][N] double **WC = (double**)malloc(sizeof(double*)*K); for (int i = 0; i < K; i++) { WC[i] = (double*)malloc(sizeof(double)*N); }
阅读全文
1
浙公网安备 33010602011771号