![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++&
zxjzxj521
这个作者很懒,什么都没留下…
展开
-
C++深拷贝和浅拷贝区别
c++默认的拷贝构造函数是浅拷贝浅拷贝就是对象的数据成员之间的简单赋值,如你设计了一个没有类而没有提供它的复制构造函数,当用该类的一个对象去给令一个对象赋值时所执行的过程就是浅拷贝,如:class A { public: A(int _data) : data(_data){} A(){}private: int data; };int main() { A a(5), b = a转载 2012-11-12 09:45:23 · 530 阅读 · 0 评论 -
变量与内存分配(一)
简单的可以理解为: heap:是由malloc之类函数分配的空间所在地。地址是由低向高增长的。 stack:是自动分配变量,以及函数调用的时候所使用的一些空间。地址是由高向低减少的。 预备知识—程序的内存分配 一个由c/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构转载 2012-11-12 10:29:36 · 589 阅读 · 0 评论 -
C++之预处理
预处理是指在进行程序编译的第一遍扫描(词法扫描和语法分析)之前所做的工作。预处理是C语言一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分进行处理,处理完毕自动进入对源程序的编译。 预处理程序(预处理器)包含在编译器中。预处理程序首先读源文件,预处理的输出是“翻译单元”,它是存放在内存中的临时文件。编译器接受预处理的输出转载 2012-11-12 10:20:52 · 670 阅读 · 0 评论 -
C++之#progma pack预处理
前文我们简单地介绍了一下C\C++中的预处理,现在我们再来了解一下#progma pack的使用方法。 #progma pack ([n])表示内存对齐,目的是为了优化内存,减少内存碎片,使得内存按照一个固定的规则进行分配,让分配的内存总是n的倍数,避免随意分配内存大小。举个例子,我们在Visual C++中编写如下的类,class X { int a; ch转载 2012-11-12 10:17:36 · 1393 阅读 · 0 评论 -
C++之类的构造与析构(一)
今天我们了解一下类的构造函数、析构函数。其中构造函数会提到默认构造函数、重载构造函数和复制构造函数。好了,现在开始我们的旅程吧。 首先温习一下C和C++中分配内存的方法。我们知道,C中的malloc/free和C++中的new/delete是用来分配内存和释放内存的,这里的内存是前面博文提到的“堆”。(如果不了解什么是堆,请参考文章《C\C++的内存存储》 )他们的区别如下:转载 2012-11-12 10:11:30 · 2380 阅读 · 0 评论 -
一条进程的栈区、堆区、数据区和代码区在内存中的映射
出处: 少即是多,慢即是快! 栈区:主要用来存放局部变量,传递参数,存放函数的返回地址。.esp始终指向栈顶,栈中的数据越多, esp的值越小。 堆区:用于存放动态分配的对象,当你使用 malloc和new等进行分配时,所得到的空间就在堆中。动态分配得到的内存区域附带有分配信息,所以你能够free和delete它们。转载 2012-11-12 10:03:14 · 659 阅读 · 0 评论 -
C++之deque
1 什么是STL STL就是C++ Standard Template Library,也就是标准模版库,是一个高效的C++程序库。STL包含六大组件:容器(container)、算法(algorithm)、迭代器(iterator)、配置器(allocator)、适配器(adapter)和函数对象(function object)。我们在学习这些组件时,应该按其重要程度来区转载 2012-11-12 09:55:38 · 2755 阅读 · 0 评论 -
C++之list
今天我们来讲一讲STL中的顺序容器。昨天我们讲了vector,它就是顺序容器中最常用的容器之一。今天我们讲一讲list。双向循环链表list list是双向循环链表,,每一个元素都知道前面一个元素和后面一个元素。在STL中,list和vector一样,是两个常被使用的容器。和vector不一样的是,list不支持对元素的任意存取。list中提供的成员函数与vector类似转载 2012-11-12 09:48:34 · 506 阅读 · 0 评论 -
C++之vector
vector简介 vector是STL中最常见的容器,它是一种顺序容器,支持随机访问。vector是一块连续分配的内存,从数据安排的角度来讲,和数组极其相似,不同的地方就是:数组是静态分配空间,一旦分配了空间的大小,就不可再改变了;而vector是动态分配空间,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量。 vector的扩充机制:按照容器现在容转载 2012-11-12 09:47:38 · 674 阅读 · 0 评论 -
C++之deque
今天把最后一个常用的顺序容器简单地描述一下,它就是deque。2 双端队列deque2.1 deque简介 deque是双向开口的连续性存储空间。虽说是连续性存储空间,但这种连续性只是表面上的,实际上它的内存是动态分配的,它在堆上分配了一块一块的动态储存区,每一块动态存储去本身是连续的,deque自身的机制把这一块一块的存储区虚拟地连在一起。 它首次插入转载 2012-11-12 09:52:17 · 1160 阅读 · 0 评论 -
C++之extern "C"的含义
extern "C"的含义是编译生成的内部符号名使用C语言的规则。我们需要知道的是,对于不同的编译器,在编译一个函数时,编译出来的函数名称或参数排列的顺序可能是不同的。例如,我们假设某个函数的原型为:void foo( int x, int y ); 该函数被C编译器编译后在符号库中的名字可能为_foo,而C++编译器则会产生像_foo_int_int之类的名字(_foo_int_int这样的名字转载 2012-11-12 10:40:41 · 579 阅读 · 0 评论