(C++)类的定义(实现类成员函数)——详细讲解,举例子

前面讲解了类的声明,现在我们讲解一下类的定义。

类的定义说简单点就是实现类成员函数,而成员函数定义与常规的函数定义非常相似,也需要有函数头和函数体,也可以有返回类型和参数。

有两个特殊的特征:
1、定义成员函数时,使用作用域解析运算符(::)来标识函数所属的类;
2、类方法可以访问类的private组件。

我们先来看成员函数的函数头使用作用域运算符解析(::)来指定函数所属的类。
eg:void Stock::update(double price)       
意思是定义了update()函数是Stock类的成员

这不仅标识update()为成员函数,而且我们可以将另一个类的成员函数也命名为update()
eg:void Buffoon::update()
这是Buffoon类的update函数的函数头

所以作用域解析运算符确定了方法的定义对应的身份

举例子,上代码(对上一篇文章类声明的头文件中的public四个类成员进行定义)

#include <iostream>
#include "stockoo.h"		//上一篇文章的类声明的头文件

void Stock::acquire (const std::string & co, long n, double pr)
{
	company = co;
	if (n < 0)
	{
		std::cout << "Number of shares can't be negative; " << cpmpany << " shares set to 0 ." << endl;
		shares = 0;
	}
	else
		shares = n;
	share_val = pr;
	set_tot();	
}

void Stock::buy (long num, double price)
{
	if(num < 0)
	{
		std::cout << "Number of shares purchased can't be negative; " << "Transaction is aborted. " << endl;
	}
	else
	{
		share += num;
		share_val = price;
		set_tot();
	}
}

void Stock::sell (long num, double price)
{
	using namespace std;
	
	if(num < 0)
	{
		cout << "Number of shares purchased can't be negative; " << "Transaction is aborted. " << endl;
	}
	else if(num > shares)
	{
		cout << "You can't sell more than you have! " << "Transaction is aborted. " << endl;
	}
	else
	{
		share -= num;
		share_val = price;
		set_tot();
	}
}

void Stock::show()
{
	using namespace std;
	
	cout << "Company: " << company << endl;
	cout << "Shares: " << shares << endl;
	cout << "Share Price: $ " << share_val << endl;
	cout << "Total Worth: $ " << total_val << endl;
}


注意:
我使用了内联函数,内联函数定义位于类声明中的函数都将自动称为内敛函数,因此我们的void set_tot(){total_val = shares * share_val;是一个内联函数。通常类声明将短小成员函数作为内联函数。

简单来说:
某一个函数的定义在函数声明中出现,这个函数就是内联函数。

也在类声明之外定义成员函数,并使其成为内联函数,使用关键字inline

举个例子:

class Stock
{
private:
	...
	void set_tot();	                //只是作声明
public:
	...
};

inline void Stock::set_tot()		//定义内联函数
{
	total_val = shares * share_val;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小黄TimTim仔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值