#include <iostream>
using namespace std;
/*主要练习(1)构造函数初始赋值,
(2)对象指针做形参时,要求调用函数的实参是对象的地址值,如add(&A)传递的就是A的地址,而add函数的定义就是指针做形参
(3)对象引用做形参时,要求实参是对象本身,如sub(A),而定义的是sub(&A)
第2种其实就相当于直接传递对象即可如sub(&A) 和squr(A)的效果一样*/
class Calculator
{
double a;//我们设置a不是public,而是默认的private,则必须使用A.Geta()来获取a的值
public:
double b;//如果此处没有定义a,b是public的,则必须提供get函数来使外部能够访问,就必须java中的set,get方法,
Calculator(){a=0.0;b=0.0;}; //构造函数初始赋值,必须是public的,否则不能实例化
void GetA();
void GetAB();
double Geta(){return a;}
};
void Calculator::GetA()
{
cout<<"请输入要开平方的数"<<endl;
cin>>a;
}
void Calculator::GetAB()
{
cout<<"请输入第一个数"<<endl;
cin>>a;
cout<<"请输入第二个数"<<endl;
cin>>b;
}
double add(Calculator *A)//第一种哦
{
return A->Geta() + A->b;
}
double sub(Calculator &A)//第二种哦,和第三种用法一样,调用时都是对象本身作为实参即可
{
return A.Geta()-A.b;
}
double squr(Calculator A)//第三种哦
{
return sqrt(A.Geta());
}
void main()
{
int n;
Calculator A ;//如果构造函数没有说明是public的,则此处会报错
cout<<"欢迎使用计算器"<<endl;
cout<<"1:加法"<<endl;
cout<<"2:减法"<<endl;
cout<<"3:开平方"<<endl;
cout<<"请选择"<<endl;
cin>>n;
switch(n)
{
case 1:
A.GetAB();
cout<<add(&A)<<endl;
break;
case 2:
A.GetAB();
cout<<sub(A)<<endl;
break;
case 3:
A.GetA();
cout<<squr(A)<<endl;
break;
}
system("Pause");
}