首页 > 其他分享 >重载运算符

重载运算符

时间:2022-10-03 11:12:23浏览次数:49  
标签:boy 常量 name 运算符 重载 构造函数

[ ]字符串也能作下标:

 尽量不要在代码中写裸常量,可用宏定义,若是整型可以采用枚举类型(枚举类型中的修饰词可以被取出来直接使用,即不通过定义一个变量来使用)。

 

重载<< 和 >>

此应用方式并不符合一般的编程习惯。

 

 运行结果:

实际上,虽然该方法使用的是全局函数,但是为了封装效果,应该写入对应的类的类文件中。 (实现到类文件,声明到头文件)

 

重载>>

 

运行:

 这里退出时会有错误提示:因为name变量是char*型,Boy类构造函数时,会根据输入的字符长度开辟新的空间。此时“老王”名字长度大于Rock的字符长度,所以出错。

 

一般来讲:char*a= "agfs"; a = "dgasgasg";这是可以的,但是cin或者scanf 对a 是不行的。

上面的函数能够cin >> boy.name是因为this->name指向的是堆空间,所以可以更改。这种情况下c的scanf_s也是可以的。

那么如何解决错误:

 

 

 

 输出结果:

 

 

 

在boy类中进行实现:

 运行结果:

 

 

//可以采用第二种方式(类类型==>普通类型)实现,但不是太妥当,可能引起歧义。

 运行:

 这里年龄错误是因为,age = boy[AGE];函数调用发生错误,为什么呢:

因为,Man的构造函数中,boy是常引用,对象是常量对象。下标重载函数的方法不是常量方法,所以不能调用。

 将这两种方法加上const;定义之处也要加。重新实行:

 

标签:boy,常量,name,运算符,重载,构造函数
From: https://www.cnblogs.com/ylww/p/16746980.html

相关文章

  • 第十三篇: go运算符
    算术运算符运算符术语示例结果+加10+515-减10-55*乘10*550/除10/52%取模(取余)10%31++后自增,没有前自增a=0;a++......
  • 位运算符
    java中有7个位运算符(&、|、^、~、>>、<<、>>>)按位与&  按位或|  按位异或^  按位取反~按位与&  两位全为1,结果为1,否则为0按位或|   两位有一个为1,......
  • d有相同名类方法重载不适用于基类
    ​​原文​​​仅在基类上​​提供​​正确​​重载​​,而派生类上包含​​不正确​​重载时,编译器不会检查​​基类重载​​.如果​​派生类​​没有任何重载,则它可以......
  • java的方法定义(方法重载)!!!!!!
    方法的定义调用,!!!!!!![方法重载,(递归)]!!!!!!!一.方法System.out.println();是什么System是一个系统的类,out是一个对象:system下一个输出的对象,println()是一个方法调......
  • 条件运算符
    逗号运算符cerrbreakCS_DBLCLKSdwSuspendCountWAIT_OBJECT_0WindowProcessdureWNDCLASSEX_CrtDumpMemoryLeaks_CrtSetBreakAllocnothrownewplacementnewplai......
  • 位运算符
    异或性质0^a=aa^a=0用法判断某个数出现次数的奇偶或性质用法且性质用法非性质用法......
  • Java中的运算符
    短路1.true||2.true||3.false||4.true其中走完1表达式就不会再走了节省了不必要的计算1.true&&2.true&&3.false&&4.true其中走完3表达式就不会再走了......
  • 数据类型,变量,运算符,Scanner对象
    ##注释```javapackagecom.chen.base;publicclassHelloWorld{publicstaticvoidmain(String[]args){//单行注释:只能注释一行文字//输出一个......
  • mysql基础(三):运算符
    前言算术运算符算术运算符主要用于数学运算,其可以连接运算符前后的两个数值或表达式,对数值或表达式进行加(+)、减(-)、乘(*)、除(/)和取模(%)运算加减运算符一个整数类型的值对整数进......
  • 万物可运算:运算符重载
         先定义函数,后进行友元。    ......