C++学习笔记 第16课 类的真正形态

1. 类的真正形态

C++中使用class来定义类,默认访问级别是private,用struct来定义类时,默认级别为public

在这里插入图片描述
实例分析:Operator类的分析

#include <iostream>

using namespace std;

class  Operator
{
public:
	bool setOperator(char op);
	void setParameter(double dPar1,double dPar2);
	bool result(double& r);
private:
	char cOp;
	double dParameter1;
	double dParameter2;
};

bool Operator::setOperator(char cOp)
{
	bool ret = false;

	if ((cOp == '+') || (cOp == '-') || (cOp == '/') || (cOp == '*'))
	{
		ret = true;
		this->cOp = cOp;
	}
	else
	{
		this->cOp = '\0';
	}
	return ret;
}

void Operator::setParameter(double dPar1, double dPar2)
{
	this->dParameter1 = dPar1;
	this->dParameter2 = dPar2;
}

bool Operator :: result(double& r)
{
	bool bRet = true;

	switch (cOp)
	{
		case '+':
			r = dParameter1 + dParameter2;
			break;
		case '-':
			if ((-0.000000001 < dParameter1) && (dParameter2 < 0.000000001))
			{
				bRet = false;
			}
			else
			{
				r = dParameter1 / dParameter2;
			}
			break;
		case '/':
			r = dParameter1 / dParameter2;
			break;
		case '*':
			r = dParameter1*dParameter2;
			break;
		default:
			break;
	}

	return bRet;
}

int main()
{
	Operator op;
	double r;

	op.setOperator('+');
	op.setParameter(12, 10);

	if (op.result(r))
	{
		printf("r = %lf", r);
	}
	else
	{
		printf("Calculate error!\n");
	}

	return 0;

}

在这里插入图片描述

2.域名作用符

  • global scope(全局作用符),用法(::name)
  • class scope(类作用符),用法(class::name)
void Operator(类名)::setParameter(double a, double b);
  • namespace scope(命名空间作用域符),用法(namespace::name)他们都是左关联(left-associativity)

2.1 编程实验

#include <iostream>

using namespace std;

int i = 0;

class test
{
public:
	 static int i;
};

int test::i = 2;

namespace iTest
{
	int i = 3;
}

int main()
{
	cout << "::i" << ::i << endl;
	cout << "test::i"  << test::i << endl;
	cout << "iTest::i" << iTest::i << endl;
	return 0;
}
结果:
::i = 0
test::i = 2
iTest::i = 3

3. 小结

  • C++引进新的关键字class用来定义类
  • struct和class的区别在于默认访问级别的不同
  • C++中类支持声明和实现的分离
  • 头文件中声明类
  • 源文件中声明类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值