Cod*_*ash 7 c++ oop runtime-error operator-overloading insertion
昨天有人给了我一个错误的节目.在MVS 2010中工作,我发现了问题,也是它的替代方案.问题是重载的插入操作符类.其原型如下......
void matrix :: operator << (matrix&) ;
Run Code Online (Sandbox Code Playgroud)
它是从这样的地方打来的......
matrix m ;
m.operator << (m) ;
Run Code Online (Sandbox Code Playgroud)
我发现编译器不允许发送与调用函数的引用参数相同的对象.但我不明白背后的原因以及它造成了什么问题.如果有人能够解释,我将不胜感激.谢谢.
编辑:
实际发生的是,在调试时,它进入函数内部,在执行时出现main
,进入外部依赖文件dbgdel.cpp
并在此行停止.
_ASSERTE(_BLOCK_TYPE_IS_VALID(pHead->nBlockUse));
Run Code Online (Sandbox Code Playgroud)
给出的代码编译并运行得很好VS2010 SP1
.
如图所示,代码没有问题,这是完全合法的.声明一个运算符重载然后用运算符调用它有点奇怪<<
,因为你可以很容易地写m << m
.
一些猜测:
m
运算符实现中某处的地址并意外删除它