大小端模式

摘要: 大端模式: 内存|低 >高| 数据|高字节 >低字节| 小端模式: 内存|低 >高| 数据|低字节 >高字节| 阅读全文
posted @ 2017-03-03 05:18 123_123 阅读(120) 评论(0) 推荐(0) 编辑

栈vs堆

摘要: 栈:在Windows下,栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在WINDOWS下,栈的大小是2M(也有的说是1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将 提示overflow。因此,能从栈获得的空间 阅读全文
posted @ 2017-03-03 05:11 123_123 阅读(114) 评论(0) 推荐(0) 编辑

动态库vs静态库

摘要: 静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。 动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在. 阅读全文
posted @ 2017-03-03 03:57 123_123 阅读(124) 评论(0) 推荐(0) 编辑

虚拟继承

摘要: A A B C D D继承自类B和类C,类B和类C继承自A 于是为了节省空间,可以将B,C 对A的继承设置为虚拟继承。A就成了虚拟基类。 A B C D class A; class B : public virtual A; class C : public virtual A; class D 阅读全文
posted @ 2017-03-03 00:43 123_123 阅读(111) 评论(0) 推荐(0) 编辑

类的内存分部

摘要: sizeof(A) = 4+3+1 = 8; sizeof(B) = sizeof(A)+4+3+1 = 16; sizeof(C) = sizeof(B)+4+3+1 = 24; 阅读全文
posted @ 2017-03-03 00:23 123_123 阅读(104) 评论(0) 推荐(0) 编辑

重写String类

摘要: class MyString { public: MyString(const char * str = NULL);//普通构造函数 MyString(const MyString &oter);//拷贝构造函数 ~MyString(void);//析构函数 MyString & operator = (const MyString &other);//赋值函数... 阅读全文
posted @ 2017-03-02 21:22 123_123 阅读(252) 评论(0) 推荐(0) 编辑

vector删除符合条件的元素

摘要: vector ivec; for (int i = 0; i ::iterator iter = ivec.begin(); iter != ivec.end(); iter++) { if (*iter % 2 == 0) { iter = ivec.erase(iter); } else ... 阅读全文
posted @ 2017-03-02 20:44 123_123 阅读(112) 评论(0) 推荐(0) 编辑

关于 this 指针

摘要: 1)this指针的本质是一个函数参数,只能在成员函数中使用,全局函数,静态函数都不能使用。 class A{ public: int func(int p){}; }其中func的实际表示形式为int func(A* const this,int p); 2)this指针并不占用对象的空间 this 阅读全文
posted @ 2017-03-02 05:33 123_123 阅读(111) 评论(0) 推荐(0) 编辑

malloc/free vs new/delete

摘要: malloc/free 是C/C_++ 标准库函数;new/delete 是C++的运算符; 对于非内部数据对象而言,malloc/free无法满足动态对象增长的需要,对象在创建的时候需要执行构造函数,消亡前需要执行析构函数。 由于malloc/free是库函数而不是运算符,不在编译器控制权限之内, 阅读全文
posted @ 2017-03-02 04:24 123_123 阅读(96) 评论(0) 推荐(0) 编辑

指针vs引用

摘要: 1)非空区别。 指针可以为空,引用必须初始化。 2)合法性区别 指针在使用前必须判孔,引用不需要 3)可修改区别 指针可以改变所指的对象,引用不可以改变。 阅读全文
posted @ 2017-03-02 03:07 123_123 阅读(100) 评论(0) 推荐(0) 编辑