指针形参1,引用形参2,对象形参3区别

来源:互联网 发布:js函数给全局变量赋值 编辑:程序博客网 时间:2024/04/29 08:42

#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");
}

原创粉丝点击