C++
xx__hu
这个作者很懒,什么都没留下…
展开
-
new/delete 与 malloc/free 的区别是什么?
先上区别: 1. new/delete是C++里才有的,而new/delete与malloc/free一个显著的区别在于,new是建造一个对象,并调用对象的构造函数来初始化对象,其实在所有的new操作过程中,总是分为两步的:第一步是申请内存,第二步则是调用构造函数初始化对象。同样,在调用delete的时候,需要先调用析构函数,然后在销毁堆内存。 2. new/delete通常来转载 2015-07-02 08:28:26 · 588 阅读 · 0 评论 -
标准ASCII编码
ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。 标准ASCII 码也叫基础ASCII码,使用7 位二进制数来表示所有的大写和小写字母,数字0 到9、标点符号, 以及在美式英语中使用的特殊控制字符。 其中: 0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除转载 2015-07-31 09:11:28 · 1383 阅读 · 2 评论 -
结构体大小计算
根据以下条件进行计算: 1、 结构体的大小等于结构体内最大成员大小的整数倍 2、 结构体内的成员的首地址相对于结构体首地址的偏移量是其类型大小的整数倍,比如说double型成员相对于结构体的首地址的地址偏移量应该是8的倍数。 3、 为了满足规则1和2编译器会在结构体成员之后进行字节填充! 1 2 3 4 5 6转载 2015-07-27 21:50:21 · 390 阅读 · 0 评论 -
成员函数之重载、覆盖、隐藏
重载: 只有在 同一类定义中的同名成员函数才存在重载关系 ,主要特点是 函数的参数类型和数目有所不同 (但 不能出现函数参数的个数和类型均相同 ,仅仅依靠返回值类型不同来区分的函数),这和普通函数的重载是完全一致的。另外,重载和成员函数是否是虚函数无关 覆盖: 在派生类中覆盖基类中的同名函数,要求两个函数的参数个数、参数类型、返回类型都相同,且基类函数必须是虚转载 2015-07-28 08:05:49 · 338 阅读 · 0 评论 -
数组名可作为指针常量
三个结论: (1)数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组; (2)数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量; (3)指向数组的指针则是另外一种变量类型(在WIN32平台下,长度为4),仅仅意味着数组的存放地址! #include int main(int argc, char* argv[])转载 2015-07-27 19:19:04 · 1841 阅读 · 0 评论 -
有关C++中为什么用模板类的原因
( 1 )可用来创建动态增长和减小的数据结构 (2)它是类型无关的,因此具有很高的可复用性。 (3)它在编译时检查数据类型,保证了类型安全 (4)它是平台无关的,可移植性 (5)可用于基本数据类型转载 2015-07-27 21:32:31 · 939 阅读 · 0 评论 -
析构函数什么情况下要定义为虚函数?
1.第一段代码 #include using namespace std; class ClxBase{ public: ClxBase() {}; ~ClxBase() {cout void DoSomething() { cout }; class ClxDerived : public ClxBase{ public: C转载 2015-07-25 09:18:24 · 267 阅读 · 0 评论 -
C++的内存模型
Simplified Memory Model (C++的内存模型) 1. Stack (栈) 编译器自动分配释放(包括所有函数里面的局部变量,形式参数) 2. Heap (堆) 一般由程序员分配释放,若程序员不释放,程序结束时可能由OS回收(若使用new运算符分配内存,如不用delete释放的话,有可能会内存泄漏,也有可能在程序结束时,由操作系统自动收回) 3. Global/转载 2015-07-02 08:35:01 · 360 阅读 · 0 评论 -
在为函数传参时, 何时用引用,何时用指针呢?
一般来说,能用引用尽量不用指针。引用更加直观,更少出现意外的疏忽导致的错误。 指针可以有二重、三重之分,比引用更加灵活。有些情况下,例如使用 new 运算符,只能用指针。 关于指针与引用的区别,可以看 CSDN 的【这篇文章】,讲得很细致;在该文中的第5部分,也讲了函数传参时“指针传递”与“引用传递”的差别,但这个解释比较晦涩,需要你有汇编语言或者微机原理或者计转载 2015-07-02 16:01:59 · 1155 阅读 · 0 评论 -
C++vector容器A和B的连接
(1)vectorv1, v2; 想要实现v1, v2的连接 copy(vt1.begin(), vt1.end(), back_inserter(vt2)); (2) vectorv1, v2,v3; for(i = 0; i { v1.pushback(i); v2.pushback(i+3); } 想要实现v1, v2的连接v3使v3成为包含(0,1,2转载 2015-06-11 15:42:29 · 1113 阅读 · 0 评论 -
typedef和define具体的详细区别
1) #define是预处理指令,在编译预处理时进行简单的替换,不作正确性检查,不关含义是否正确照样带入,只有在编译已被展开的源程序时才会发现可能的错误并报错。例如: #define pi 3.1415926 程序中的:area=pi*r*r 会替换为3.1415926*r*r 如果你把#define语句中的数字9 写成字母g 预处理也照样带入。 2)typedef是在编译时处理的。它在自己的作转载 2015-07-24 22:46:53 · 305 阅读 · 0 评论