首页 > 其他分享 >特殊成员函数

特殊成员函数

时间:2024-08-05 14:17:17浏览次数:6  
标签:特殊 函数 成员 StringBad 运算符 str 拷贝 赋值 构造函数

C++提供的特殊成员函数
1.你未定义构造函数会生成默认构造函数
2.你未定义析构函数会生成默认析构函数
3.未定义拷贝构造函数时生成拷贝构造函数
4.赋值运算符=
5.&取地址运算符

拷贝构造函数使用
1.使用赋值运算符时=
2.进行值传递时,进行值传递意味会产生一份传递参数的拷贝。
3.产生临时变量时。
Class_name(const Class_name &);
例:
StringBad(const StringBad &);
以下四种情况都会调用拷贝构造函数
StringBad motto;
1.StringBad ditto(motto);
2.StringBad metto=motto;
3.StringBad also=StringBad(motto);
4.StringBad *pStringbad=new StirngBad(motto);
默认拷贝构造函数
会产生浅拷贝
例:StringBad sailor=sports;
等同于
StringBad sailor;
sailor.str=sports.str;
sailor.len=sprots.len;
1.如果成员变量有类类型,会调用该类的拷贝构造函数。
2.静态变量不受影响,因为它是类公用的。static
3.如果你定义了一个静态类变量会在构造函数调用时改变,应该编写对应的拷贝构造函数。
4.如果一个类成员变量包含指针被new初始化,你应该书写拷贝构造函数,避免默认拷贝构造函数仅进行指针赋值。对应于深拷贝。
赋值运算符
Class_name & Class_name::operator =(const Class_name &);
例:StringBad & StringBad::operator =(const StringBad &);
使用:
StringBad headline1("How are you");
StringBad knot;
knot=headline1;//调用赋值运算符
StringBad metto=knot;//调用拷贝构造函数
赋值运算符重载注意事项
1.使用delete[]释放空间
2.注意自我赋值的处理
3.返回引用

例:StringBad s0,s1,s2;
s0=s1=s2;//返回引用可以正常赋值
StringBad & StringBad::operator =(const StringBad &st){
if(this==&st)
return *this;//自我赋值

delete str[];//释放旧空间
len=st.len;
str=new char[len+1];
strcpy(str,st.str);
return *this;
}

标签:特殊,函数,成员,StringBad,运算符,str,拷贝,赋值,构造函数
From: https://www.cnblogs.com/zhongta/p/18343126

相关文章

  • 补充:关于GRU的详细运作原理以及特殊的优化思路
    1.GRU的基本结构和运作原理1.1GRU的基本概念GatedRecurrentUnit(GRU)是一种简化版的循环神经网络(RNN),它通过引入门控机制来解决长期依赖问题,同时减少参数数量以降低计算复杂度。1.2GRU的结构详解GRU包含两个门控机制:更新门(updategate)和重置门(resetgat......
  • 卷积神经网络 - 基本卷积函数的变体篇
    序言在深度学习和卷积神经网络(CNN\text{CNN}CNN)的广阔领域中,基本卷积函数是构建网络结构的基础,它们通过滑动窗口的方式对输入数据进行特征提取。然而,随着应用场景和数据......
  • C++(仿函数)
    目录1.仿函数的定义和使用2.仿函数的优点3.总结仿函数(Functor)是C++中的一种重要概念,它指的是一个重载了operator()的类或结构体。仿函数允许你像使用普通函数一样使用类的实例。它们通常用于需要函数作为参数的算法或需要自定义操作的场景。1.仿函数的定义和使用定义......
  • 添加speak成员方法,输出我是一个好人
    1publicclassshuzu20{2//编写一个main方法3publicstaticvoidmain(String[]args){45//方法使用6//1.方法写好后,如果不去调用(使用),不会输出7//2.先创建对象,然后调用方法即可8Personp1=newPerson();9......
  • KMP 与 Z 函数拓展
    【失配树:KMP拓展】先KMP一遍。然后对\(0\simn\)建立一棵树:\(nxt[i]\)作为\(i\)的父结点。则最长公共border就是这棵树上的LCA对应的长度。border:若\(a\)既是\(s\)的前缀又是\(s\)的后缀,则\(a\)是\(s\)的border。周期:若\(s\)以\(p\)为周期,则\(s[......
  • 主体与特殊主体-法硕5轮背诵觉晓
    刑法学法硕联考笔记:精神病人刑事责任的专业解读在刑法学法硕联考的广阔领域里,精神病人的刑事责任是一个既复杂又充满人文关怀的话题。今天,我们就来深入探讨一下这一专业领域,看看我国刑法是如何对精神病人的刑事责任进行界定的。......
  • excel函数的学习
    1、学习excelSUM :求和函数AVERAGE:平均值函数IFROUNDMAXMININTVLOOKUPSUMIFSUMSIFCOUNTCOUNTIFNOWTODAYMIDPHONETICLENRIGHT二、实操(1)SUM :求和函数 条件判断函数四舍五入函数最大值函数最小值函数数据取整函数条件查找函数按条件求和函数按多个条件求和函数统计数字个......
  • 尝试从函数内部更改值,但退出函数时它不会改变
    尝试制作一个准系统的Pokemon游戏并且切换不起作用当尝试切换Pokemon时,我可以让代码识别activePlayerMon=在运行switchOption()函数时有一个值切换,但是一旦调试器离开该函数,它就会恢复当第一次提示您选择Mon时,返回到最初给定的值deffight(playerlist,computerl......
  • 字符专用输入输出函数 getchar() putchar()
    文章目录一、字符专用接收函数1.1scanf实现字符接收1.2字符专用接收函数getchar1.3练习1.4利用循环使字符接收函数接收字符串的元素二、字符专用输出函数2.1printf实现打印字符2.2字符专用输出函数putchar提示:以下是本篇文章正文内容,下面案例可供参考一、字......
  • 继承与成员变量以及构造方法的关系day08
    继承与成员变量的关系:1、怎么寻找?子类方法中使用变量的规则是:(就近原则)1)先在方法内部寻找,若找到就直接使用2)方法内部找不到,去当前类的成员变量的位置上寻找,若找到就直接使用3)若当前类的成员变量的......