C++之计算器类实现
优点:结构清晰,利于前期和后期的拓展和维护
example
#include <iostream>
#include <string>
using namespace std;
//抽象类:
class Calculator
{
public:
virtual int result()
{
return 0;
}
int num1;
int num2;
};
class Add : public Calculator {
public:
int result()
{
return num1+num2;
}
};
class Sub : public Calculator
{
public:
int result()
{
return num1 - num2;
}
};
class Mul : public Calculator {
public:
int result()
{
return num1 * num2;
}
};
//函数
void test()
{
//父类指针或者引用指向子类对象
Calculator * abc = new Add;
cout << "输入第一个数据:" << endl;
cin>>abc->num1;
cout << "输入第二个数据:" << endl;
cin>>abc->num2;
cout << abc->num1 << " + " << abc->num2 << " = " << abc->result() << endl;
delete abc;
abc = new Sub;
cout << "输入第一个数据:" << endl;
cin >> abc->num1;
cout << "输入第二个数据:" << endl;
cin >> abc->num2;
cout << abc->num1 << " - " << abc->num2 << " = " << abc->result() << endl;
delete abc;
abc = new Mul;
cout << "输入第一个数据:" << endl;
cin >> abc->num1;
cout << "输入第二个数据:" << endl;
cin >> abc->num2;
cout << abc->num1 << " *" << abc->num2 << " = " << abc->result() << endl;
delete abc;
}
int main()
{
test();
system("pause");
return 0;
}
错误记录:
第一次书写:
cout << abc->num1 << " + " << abc->num2 << " = " << abc->result << endl;
成员函数result未添加()
VS2017显示:C3867 “XXXXX”,非标准语法,请使用&来创建指向成员的指针
编译器认为此未成员变量,不是成员函数。所以会显示这样的错误
修改成:
cout << abc->num1 << " + " << abc->num2 << " = " << abc->result() << endl;