c++
文章平均质量分 92
吃不够的圆儿宝
每一天都过的问心无愧
展开
-
C++知识点随笔(四):耦合问题、new和malloc、虚析构、多继承
一、耦合问题即互相包含头文件的问题,解决方法: 1. 在一个类的头文件里声明另一个类,那么我们在定义的时候就不能new对象,但是可以定义一个指针。这只是为了保证编译通过,等到具体创建对象的时候还是会使用原来的类成员。 2. 可以抽象出一个父类,让这个父类里面同时包含这两个子类里需要耦合的部分。 3. friend方法,其实也相当于一个声明,但是friend会破坏类的封装性。(传说中友元是不原创 2015-07-08 09:50:25 · 815 阅读 · 1 评论 -
C++知识点随笔(六):模板
一、函数模板C++中模板和重载的区别: 模板是除了类型全都相同的情况下可以使用;而重载是里面的功能也有不同时使用的。 下面看一个函数模板的使用实例:#include<iostream> using namespace std;typedef struct _Node { int m_a; char* m_str; }Node;bool leftNodeBig(Node a, No原创 2015-07-09 13:59:29 · 394 阅读 · 1 评论 -
C++知识点随笔(三):static、const、friend、inline
一、static静态成员属性为什么要在类外初始化? 静态成员属性之所以不能在构造函数内初始化,是因为构造函数必须要在定义对象的时候才会调用,而static变量在编译的时候就创建了,所以要在类外通过类名作用域对static成员属性初始化。注意:sizeof()在C++中和C语言有不同,当我们:cout << sizeof(//类名) << endl;的时候,不是输出这个类的大小,而是输出定义一个这个原创 2015-07-07 09:24:18 · 1011 阅读 · 1 评论 -
C++知识点随笔(二):继承、多态
一、继承继承是类之间的,对象之间没有什么关系,比如子类继承了父类的成员属性,并且子类的对象修改了这个成员属性,可是修改之后我们再去输出父类的成员属性发现并没有发生改变,原因是这两个对象本来就是两块空间里的,没有什么联系。 继承只是继承父类的成员属性,成员函数并不会发生继承,因为本来就只有一份儿,只不过子类可以使用父类的成员函数罢了。 我们用C语言的结构体来模拟一下C++的继承,其实就相当于在子结原创 2015-08-02 21:09:50 · 631 阅读 · 1 评论 -
C++知识点随笔(一):this指针、拷贝构造函数、初始化列表
一、成员属性与成员函数成员属性是定义对象才有的,sizeof()计算类的大小的时候包含在内; 而成员函数是编译时就放在代码区的,所以sizeof()并不把其计算在内,并且调用成员函数并不用定义对象,如下面的代码就可以正常运行:CPeople *p = NULL; p->Show();而成员函数在使用成员属性的时候,过程是这样的:我们定义的对象在调用成员函数的时候,首先将当前类的地址给成员函数,然后原创 2015-07-05 17:42:39 · 1126 阅读 · 1 评论 -
C++知识点随笔(七):成员函数指针、模拟虚函数列表
成员函数指针普通的全局函数指针定义:typedef void (*PFUN)();普通的函数指针可以指向返回值和参数类型都相同的全局函数,可是成员函数该怎么办呢?如果成员函数是static的,那么可以正常指向,如下实例:#include <iostream> using namespace std;class CAA{ public: static void ShowStatic(){原创 2015-08-04 11:36:52 · 508 阅读 · 3 评论 -
C++知识点随笔(五):虚继承
虚继承的出现就是为了解决多继承中访问不明确的问题。 首先让我们先看一下虚继承的代码:#include<iostream> using namespace std;class AA { public: int m_a; AA() { m_a = 100; } };class BB : virtual public AA { public: in原创 2015-08-20 20:33:30 · 523 阅读 · 2 评论 -
C++内存泄漏处理
/* 功能: 我们重载了operator new是全局的,new运算符先调用我们重载的operator new,再调用相应的构造函数,一般来讲都是使用placement new直接在operator new返回的指针上调用相应的构造函数。这里如果我们重载的是类的operator new会优先调用类内的,而不是全局的,即使类内的调用错误也不会向外找了。 */ 【memchecker.h】 struct原创 2016-02-28 14:05:48 · 500 阅读 · 1 评论 -
C/C++中static,const,inline三种关键字详细总结
一、关于staticstatic 是C++中很常用的修饰符,它被用来控制变量的存储方式和可见性,下面我将从 static 修饰符的产生原因、作用谈起,全面分析static 修饰符的实质。 static 的两大作用:一、控制存储方式 static被引入以告知编译器,将变量存储在程序的静态存储区而非栈上空间。 引出原因: 函数内部定义的变量,在程序执行到它的定义处时,编译器为它在栈上分配空间,转载 2015-07-05 14:25:21 · 691 阅读 · 1 评论