永发信息网

c++用 构造函数隐式转成, VC 中不行呀,

答案:2  悬赏:60  手机版
解决时间 2021-05-03 11:35
  • 提问者网友:兔牙战士
  • 2021-05-03 02:56

在VC中想利用构造函数隐式将其他类型转到不呀,

如只写str& operator= (str& rhs){///////////////////........................}

str strobj;

strobj = "Hello C++"想通过隐式调用构造函数将右边转换成str类型,再调用上面函数 却不行, 标准C++应该允许吧, 为什么VC中不允许呢, 我的版本是VCexpress 2008

必须通过强制类型转换才去调构造函数,再有对于这种隐式通过构造函数将其他类型转换成类型好不好, 有没有什么危害?

最佳答案
  • 五星知识达人网友:夜余生
  • 2021-05-03 04:05

str& rhs="Hello C++"; 这句是错误的。


标准C++也行不通。


因为"Hello C++"本质上是const的。


你企图将一个常量赋值给非const引用。


由于rhs是一个变量,可以被改变,这样"Hello C++"就存在了被改变的可能性。


这是不允许的,所以不行。



另外说明:"Hello C++"是常量和数字常量不一样,变异时在数据段分配内存来存储了,但这段数据("Hello C++")的内存不允许改变。

全部回答
  • 1楼网友:摆渡翁
  • 2021-05-03 05:29
没猜错的话应该是形参的问题 你声明为const str& rhs试试
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯