类中默认的函数

类中默认函数的特点:没有,系统提供      自己提供,系统不提供

构造函数是生成对象的一部分

生成对象:开辟内存,调用构造函数

一、构造函数: //String();

  1. 作用:创建对象、初始化对象所在的内存空间 给对象赋予资源、类型转换
  2. 特点:
  • 可以重载   //生而不同
  • 有this指针,this指针指向对象的内存空间
  • 不拿对象调用    
  • 不可以手动调用,只能系统来调用   //不依赖对象调用

二、析构函数:  //~String()

  1. 作用:释放对象所占资源
  2. 特点:
  • 不可以重载   //死后相同
  • 有this指针,this指针指向对象的内存空间
  • 可以手动调用,会退化成普通函数的调用      //不建议手动调用
  1. 原型:函数名和类名相同,形参不需要

三、拷贝构造函数:  //String(const String& rhs);

//特殊的构造函数 

  1. 作用:将一个已存在的对象,来生成一个相同类型的新对象
  2. 原型:函数名和类名相同,形参用const修饰,形参一定要引用(引用不生成新对象,引用是一个别名)
  3. 特点:

形参一定要用引用,避免递归调用生成形参对象,最终栈溢出,程序崩溃

默认的拷贝构造是一个浅拷贝,要自己实现一个深拷贝

//一旦成员变量里面有指针类型,就得考虑是否实现深拷贝 //给新对象开辟自己独立的内存

String(const String& rhs);

四、赋值运算符的重载函数:     //String& operator = (const String& rhs)

stu2 = stu1;

  1. 作用:拿已存在的对象给相同类型的新对象
  2. 原型:operator = (const Student& rhs); //为了连续赋值  

if(this != &rhs) //为什么一定要做判断

对象和变量不一样

  1. 返回值:类类型的引用  连续赋值
  2. 特点:系统提供的是浅拷贝
  3. 深拷贝:释放旧的资源,开辟
  4. 赋值:自赋值、释放旧的资源、开辟新的资源、赋值

五、取地址操作符的重载函数:  

六、const修饰的取地址操作符的函数:  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值