c++类和动态内存分配
2016-09-30 21:19
218 查看
动态内存和类
特殊成员函数
1默认构造函数,如果你没有定义构造函数2默认的析构函数,如果你没有定义析构函数
3复制构造函数,如果你没有定义
4赋值运算符,如果你没有定义
5地址运算符,如果你妹你没有定义
1,2我们已经说说了,现在我们来说说后面的
何时调用复制构造函数
包含一个自身类的引用的够着函数就是复制构造函数A::A(const A&);
新建对象并将其初始化为同类现有对象,复制构造函数都会被调用(函数参数按值传递时也会调用)。现在我们来谈谈默认复制函数。
1复制构造函数按值传递时也可能被创建
2默认构造函数是逐个复制非静态成员(成员复制也成为浅复制),复制的是成员的值。
比如对象中有有字符串,当调用复制构造函数时就会赋值的是字符串的地址而不是值。对于自动变量这没有问题,但是如果是new,而且我们在析构函数中使用了delete,在析构函数被调用时,其中的字符串就没了。
class A{ private : char * testSting; int len; public : void A(const chat * s){ len=std::strlen(s); testString=new char[len+1]; std::strcpy(str,s); }; ~A(){ delete [] test } }
像上面那样的话就会出现我所说的结果
赋值运算符
将一个对象赋值给另一个对象 要注意复制构造函数A a; A B=a;
上面有可能创建一个对象将其初始化为a因此调用复制构造函数,也有可能用复制构造函数来穿件零食变量,之后用赋值运算符,初始化总会调用复制构造函数,而赋值运算符也有可能。还有一点就是赋值运算符也会出现复制构造函数那样的问题
静态成员函数
静态成员函数,独立于对象。用static 关键字和作用域解释符static int f();
相关文章推荐
- C++类和动态内存分配
- c++类和动态内存分配
- C++类和动态内存分配
- C++类和动态内存分配(1)
- C++类机制的实现细节
- C++类设计思考(一):状态、查询和命令
- c++类计算减法
- C++类中函数指针的用法
- C++类的protected与private有何区别
- 看了一下MD5加密算法的介绍,然后顺手把C实现改成了个C++类
- C++类对象的拷贝构造函数
- C++类的实例化后占内存的大小计算
- 把C++类成员函数集成到lua
- C++类对象的拷贝构造函数
- C++类成员指针的使用
- 图文例解C++类的多重继承与虚拟继承
- C++类的分解,抽象类与纯虚函数的需要性
- C++基础:C++类成员属性的一种简洁实现
- (钟豪原创)第4章 C#与C++类的继承机制的对比分析(2)
- c++类成员函数