C++(类的真正形态---第16课)

1.类的关键字

struct在C语言中已经有了自己的含义,必须继续兼容
在C++中提供了新的关键字class用于类定义
class和struct的用法是完全相同的
class和struct有什么区别?
在用struct定义类时,所有成员的默认访问级别是public
在用class定义类时,所有成员的默认访问级别是private
(定义类,不要用结构体用class)

 小实例:
需求:开发一个用于四则运算的类
提供setOperator函数设置运算类型
提供setParameter函数设置运算参数
提供result函数进行运算
其返回值表示运算的合理性
通过引用参数返回结果

2.类的真正形态

C++中的类支持声明和实现的分离
将类的实现和定义分开
.h头文件中只有类的声明:成员变量和成员函数的声明
.cpp源文件中完成类的其它实现:成员函数的具体实现

实例分析:Operator类的分析

 下面就上面的小实例感受类的真正形态。

2.1 .h文件

#pragma once

class Operator
{

public:
	bool setOperator(char op);
	void setParameter(double p1, double p2);
	bool result(double& r);
private:

	char mop;
	double mp1;
	double mp2;

};


 2.2.cpp文件

#include "Operator.h"
#include <iostream>
using namespace std;
bool Operator::setOperator(char op)
{
	bool ret = false;
	if ((op == '+') || (op == '-') || (op == '*') || (op == '/'))
	{
		mop = op;
		ret = true;
	}

	else 
	{
		mop = '\0';
	
	}
	return ret;

}
void Operator::setParameter(double p1,double p2)
{
	mp1 = p1;
	mp2 = p2;

}
bool Operator::result(double& r)
{
	bool ret = true;
	switch (mop)
	{
	case '/':
		if ((-0.000000001 < mp2) && (mp2 < 0.000000001))
		{
			ret = false;
		}
		else
		{
			r = mp1 / mp2;
		}
		break;
	case '+':
		r = mp1 + mp2;
		break;
	case '-':
		r = mp1 - mp2;
		break;
	case '*':
		r = mp1 * mp2;
		break;
	default:
		ret = false;
		break;
	}

	return ret;
}

3.mian文件

#include"Operator.h"
#include <iostream>

int main()
{
	double r=0;
	Operator Myclass;
	Myclass.setOperator('+');
	Myclass.setParameter(3,5);
	if (Myclass.result(r))
	{
		printf("r=%f\n",r);
	}
	else
	{
		printf("Calculate error!\n");
	}
	system("pause");
	return 0;
}

分析一波;

在类的头文件中3个私有变量的作用?

mop返回操作符号,这个操作符号只能是内部函数使用,使用在函数setOperator,将用户输入的+赋值给mop;

当调用result()函数的时候,可以直接使用mop(类中私有变量)判断具体使用哪个计算。

mp1和mp2主要是在调用setParameter 的时候将用户输入的2个数赋值给类内对象,然后给result()函数使用。

 

要是我可能就不会这样,因为我对类内变量的使用还不是很清楚,我觉得这个小案例,应该从下面的思路去思考。

1.用户只是需要输入   + - * /

2.用户输入 2个数

那么我要对它输入的数,来实现。所以我一定在类中包括上面输入的数。然后根据他们,再去设计函数去实现功能。

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值