c++类和动态内存分配

动态内存和类

特殊成员函数

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();



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值