摘要: 1、野指针 野指针是指向了“垃圾”内存的指着。 2、产生原因 (1)指针变量没有被初始化。任何指针变量刚刚被创建的时候,是不会自动变成NULL指针的,他的缺省值是随机的,这个时候指针是乱指的。所以指针变量在被创建的同时应该被初始化,让指针指向合法的内存。 (2)指针P被free或者delect之后,没有设置为NULL;当指着被free之后,其... 阅读全文
posted @ 2016-02-26 21:25 qxj511 阅读(126) 评论(0) 推荐(0) 编辑
摘要: 1、线程 之所以还要多线程编程的原因: 进程的缺点: (1)多进程浪费资源 创建一个进程,就必须分配给独立的地址空间,建立 N 多的代码段,数据段,非常的昂贵的多任务的工作方式。而线程则来着节约。 (2)进程之间通信不便 进程之间通信要涉及到:管道、信号、信号量、消息队列、共享内存、套接字。这些都是过于麻烦。线程在同一个进程之内,数据都是共享的, (3)多进... 阅读全文
posted @ 2016-02-26 21:02 qxj511 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 对于非常简单的scanf函数,一直使用,但是却是有很多的知识点没有掌握好,现总结如下: 1、多个scanf之后,后序以 scanf("%c",&c) 当程序连续调用scanf 函数的,前面的获得输入接收的时候,一般结束都是以一个空白字符(空格、enter),比如enter 结束输入;但是,当后面接着是还有一个以 scanf("%c",&a) 的时候,则上面输出 enter 作为结束... 阅读全文
posted @ 2016-02-25 20:45 qxj511 阅读(3994) 评论(0) 推荐(0) 编辑
摘要: 1、多态 多态是通过虚函数来实现的,也就是说虚函数是允许子类重新定义成员函数,而子类通过定义和父类一样的函数的方法,被成为覆盖或者是重写。 多态的作用,使得代码可以重用,代码模块化; 函数重写: (1)子类定义的函数与父类原型相同的函数 (2)函数的重写只有发生在父类和子类之间 class Parent { public: ... 阅读全文
posted @ 2016-02-25 16:48 qxj511 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 1.继承 儿子继承父亲的遗产,儿子拥有父亲所有的成员变量和成员函数。儿子也可以拥有父亲没有的成员变量和成员函数。 子类与父类继承的关系, 也就是说: (1)子类拥有父类所有的成员变量和成员函数(除了构造函数和析构函数)。 (2)子类的对象可以当作父类的对象使用(认为子类是特殊的一个父类) (3)子类可以用父类没有的成员... 阅读全文
posted @ 2016-02-25 16:06 qxj511 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 1.基本 输入和输出 cout > x; cout > 左移和右移,居然实现了输入输出的例子,所以说左移和右移的运算符是被重载的,在不同的上下文,操作符有不同的功能; C++操作符的重载:operator + 运算符 struct Complex { int a; int b; }; // 操作符的重载 Complex operator+ (Complex &c1... 阅读全文
posted @ 2016-02-25 14:47 qxj511 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 问题: 如何统计对象的个数呢? (1)普通的成员变量?不行,因为对于普通的成员变量,对象都有各自的成员变量,他们都是相互独立的,所以并不能实现对象个数的统计 (2)全局变量:可以,但是一般来说,我们都是尽量避免全局变量(周期长,占内存,出错的时候, 不易查找), (3)类的静态成员变量和静态成员函数: YES 静态成员: (1)静态成员是属于整个... 阅读全文
posted @ 2016-02-25 11:10 qxj511 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 1.基本的概念 类,指的是莫一类的事物的概括,是一个抽象的 对象:指的是某一类里面的一个实体,是具体的 类: 通常包含了属性和行为。属性:被描述类的静态的特征,老虎的颜色、体重等静态的属性;行为:描述类的动态特征,比如跑 类的继承: 继承之后的类,继承了原先的类的所有的属性和行为;继承之后的类,也可以有自己特有的属性和行为: ... 阅读全文
posted @ 2016-02-24 21:57 qxj511 阅读(155) 评论(0) 推荐(0) 编辑
摘要: C++ 添加了一些全新的关键字。 1、new new 来进行动态内存的分配,而delect 则是进行内存的释放, 申请的方式: 变量申请:int *p = new int; // 申请开辟一块四个字节的内存空间,一个 int 型的空间 delect p; // 删除的是变量 数组申请:int *p = new int[5] // 开辟一个大小为 5个 的整型的... 阅读全文
posted @ 2016-02-24 20:40 qxj511 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 1、内联函数 define 可以定义宏代码片段,但是,C++ 推荐使用内联函数替代宏代码片段。 inline int f(int a, int b) { } 只需要在 函数定义(实现)的前面添加 inline 关键字。内联函数的出现是为了替代宏代码的片段 定义: 内联函数,其实就会将内联函数的内部直接插入到被调用的地方,所以就没有了,调用子函数... 阅读全文
posted @ 2016-02-24 13:44 qxj511 阅读(267) 评论(0) 推荐(0) 编辑