随笔分类 -  C++

摘要:1、malloc的工作原理: malloc使用一个数据结构(链表)来维护分配空间链表的构成:分配的空间/上一个空间的数据/下一个空间/空间大小等信息。对malloc分配的空间不要越界访问,因为容易破坏后台的维护结构,导致malloc/free2、new和malloc的区别和联系: 联系:new的实现使用的是malloc来实现的 区别:new使用malloc后,还要初始化空间。 基本类型,直接初始化成默认值(int成0 bool类型是false); UDT(用户自定义的)类型,直接调用指定的构造器 阅读全文
posted @ 2013-12-06 20:06 LOSER Z 阅读(338) 评论(0) 推荐(0) 编辑
摘要:一、什么是虚函数、纯虚函数、抽象基类 虚函数:在某基类中声明为 virtual 并在一个或多个派生类中被重新定 义的成员函数。 纯虚函数:是一种特殊的虚函数,使用virtual关键字,并且在其后面加上=0。 抽象基类:在基类中加入至少一个纯虚函数,使基类成为抽象类。二、为什么要使用虚函数 在理解这个问题前,就必须要理解什么是晚捆绑。 晚捆绑是相对于早捆绑而言的,那么什么又是捆绑呢?把函数体与函数调用相联系称为捆绑,当捆绑在程序运行之前完成时,这称为早捆绑。那么当捆绑根据对象的类型,发生在运行时,就称为晚捆绑。 而使用晚捆绑,无需检查对象的类型,只需要检查对象是否支持特性和方法即可。... 阅读全文
posted @ 2013-11-17 08:34 LOSER Z 阅读(5228) 评论(0) 推荐(2) 编辑
摘要:1、什么叫拷贝构造函数 拷贝构造函数是一种特殊的构造函数,它唯一的参数是源对象的引用,是const类型,经常被称为X(X&),它叫做类X的外在表现 例:class A{ public: A(){} A(const A&){ cout<<"A(A&)"<<endl; } }; 2、为什么要使用拷贝构造函数 由于拷贝构造函数是通过传值方法传递和返回,位拷贝是通过传地址方法传递,使用拷贝构造函数能够防止编译器进行位拷贝。关于位拷贝和值拷贝的区别,这篇文章讲的很清楚:http://blog.csdn.net/liam1122/a... 阅读全文
posted @ 2013-11-16 13:51 LOSER Z 阅读(770) 评论(0) 推荐(1) 编辑
摘要:在学习C++的过程中,经常被什么时候使用const、为什么使用const以及怎么使用const关键字这样的问题所困扰,以下是我对const的使用总结。1、值替代 使用#define的确单缺点,第一:没有类型信息,这就会隐藏一些很难发现的错误; 第二:如果只是想取某个class的专属常量地址,#define无法创建一个class的专属常量 第三:#define或许不被视为语言的一部分,这样会导致PI可能不会被编译器看见,以至于在运用此常量时会产生错误信息; 第四:#define不能提供任何封装性 ... 阅读全文
posted @ 2013-11-09 13:49 LOSER Z 阅读(1126) 评论(0) 推荐(1) 编辑