[ ]字符串也能作下标:
尽量不要在代码中写裸常量,可用宏定义,若是整型可以采用枚举类型(枚举类型中的修饰词可以被取出来直接使用,即不通过定义一个变量来使用)。
重载<< 和 >>
此应用方式并不符合一般的编程习惯。
运行结果:
实际上,虽然该方法使用的是全局函数,但是为了封装效果,应该写入对应的类的类文件中。 (实现到类文件,声明到头文件)
重载>>
运行:
这里退出时会有错误提示:因为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