刚接触这两个函数。觉得析构函数是用来在退出程序前释放内存的,这个比较神奇,就是程序退出时就自己调用了,并不需要去写出该函数。构造函数说了三点作用:
- 通过使用另一个同类型的对象来初始化新创建的对象
- 复制对象把它作为参数传递给函数
- 复制对象,并从函数返回这个对象
如果在类中没有定义拷贝构造函数,编译器会自行定义一个。
如果类带有指针变量,并有动态内存分配,则它必须有一个拷贝构造函数。拷贝构造函数的最常见形式如下:
只是看到了类中有指针变量的和动态内存分配的例子。
感觉这两个函数都是自己就运行了,不需要调用。所以模糊。
1、动态内存分配问题
http://www.cnblogs.com/yingying0907/archive/2012/07/31/2616975.html
① C/C++定义了4个内存区间;
代码区,全局变量与静态变量区,栈区(局部变量区),堆区(动态存储区或自由存储区)
动态分配的例子:
指针变量名=new 类型名(初始化式);
delete 指针名;
② 一般定义的变量和对象要用标识符命名,称命名对象。
动态创建的对象没名字,称为无名对象。
在动态创建char数组的时候会遇到如下问题;
int n;
char *pc;
cout << "input" << endl;
cin >> n;
pc = new char[n];
strcpy_s(pc,"内存的动态分配啊");
strcpy_s(pc,”内存的动态分配啊”);
这句话报错,不能只有两个参数,如果变成
char pc[17];
strcpy_s(pc,"内存的动态分配啊");
这个就可以运行。