c++ - 在 C++ 代码中获取虚拟值而不是期望值
问题描述
我无法理解为什么我的代码为我提供了一些虚拟价值。
有人可以帮我解决我的错在哪里,原因是什么?
#include <stdio.h>
#include <iostream>
class mypair
{
public:
int a,b;
public:
int print (int first , int second)
{
a = first;
b = second;
std::cout<<a <<" hello "<<b;
}
int getmax();
};
int mypair ::getmax()
{
int res;
res = (a>b)?a:b;
std::cout<<res;
return res;
}
int main ()
{
mypair abc;
std::cout<<abc.print(5,6);
std::cout<<abc.getmax();
}
解决方案
print()
不返回任何值,但预计会返回一个int
. 这是UB,您的虚拟值是由此引起的。
此外,在两者中print()
,getmax()
您都将输出发送到cout
. 在 的情况下getmax()
,此输出将立即先于返回值的输出,导致相同的数字显示两次,没有任何空格或分隔符。