在下面的代码中,我没有直接调用sumit()函数的输出,但是当我通过另一个函数displayIt() (调用sumit() )调用它时,它会显示输出。我怎么才能修好它?也请解释一下发生了什么?
#include<iostream>
#include<string>
using namespace std;
template <typename C>
class ABC
{
private:
C num1, num2;
public:
ABC(C a, C b)
{
num1 = a;
num2 = b;
}
void displayIt()
{
cout << "A+B:" << sumit() << endl;
}
C sumit() { return num1 + num2; }
};
int main()
{
ABC<int> o1(2, 3);
ABC<string> o2("ABC", "XYZ");
//It doesn't display aything...
cout << "Call-1: " << endl;
o1.sumit();
o2.sumit();
//It displays the output...
cout << "Call-2: " << endl;
o1.displayIt();
o2.displayIt();
system("pause");
}发布于 2018-10-10 12:18:24
当然,您没有输出,因为此方法没有试图打印任何内容。它只返回一个数字。
要么主要做这件事:
cout << o1.sumit() << endl;
cout << o2.sumit() << endl;它将直接打印此方法返回的值。
或者将displayIt的相同逻辑添加到sumit中。
BTW -这个问题与C++模板无关。同样的行为也会发生在一个普通的班级里。
https://stackoverflow.com/questions/52740023
复制相似问题