【C++】抽象和类(2)--如何实现类成员函数?

目录

1 实现类成员函数

成员函数的定义有两个特殊的特征

类方法的完整 名称包括类名

类方法可以直接 访问私有成员!!!

2 代码示例

stock00.h

stock00.cpp

3. 代码解析

3.1 成员函数说明 

3.2 内联方法

3.3 方法使用哪个对象?


请大家回顾第一讲:

【C++】抽象和类(1)--OOP编程特性、类规范基本组成、接口是什么、类与结构的区别

 1 实现类成员函数

成员函数的定义有两个特殊的特征

  • 定义成员函数时,使用作用域解析运算符(::)标识所属的类
  • 类方法可以访问类的private组件

不同类下面的成员函数名字可以一样!

void Stock:: update (double price)

void Buffoon:: update() 

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

  

Stock中的其他函数不必使用::就可以使用update(),因为他们是一个类里,是可见的

类方法的完整 名称包括类名

Stock::update()是函数的限定名

update() 是全名的缩写

类方法可以直接 访问私有成员!!!

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

2 代码示例

stock00.h

// stock00.h -- Stock class interface
// 版本 00 类的声明
#ifndef STOCK00_H_
#define STOCK00_H_
 
#include<string>
 
class Stock
{
public:
	void acquire(const std::string & co, long n, double pr);
	void buy(long num, double price);
	void sell(long num, double price);
	void update(double price);
	void show();
 
private:
	std::string company;
	long shares;  //股票数量
	double share_val;  // 每股的价格
	double total_val;   //股票的总价格
	void set_tot()
	{
		total_val = shares*share_val;
	}
 
};
 
#endif

stock00.cpp

// stock00.cpp -- 对类stock00.h进行函数描述
// 版本还是00
#include<iostream>
#include"stock00.h"

void Stock::acquire(const std::string & co, long n, double pr)
{
	company = co;
	if (n < 0)
	{
		std::cout << "股票数量不能设置为0; "
			<< company << " shares set to 0. \n";
		shares = 0;
	}
	else
	{
		shares = n;
	}
	share_val = pr;
	set_tot();
}

void Stock::buy(long num, double price)
{
	if (num < 0)
	{
		std::cout << "股票购买数量不能是负数。" << "交易被终止了!!\n";
	}
	else
	{
		shares += num;
		share_val = price;
		set_tot();
	}
}

void Stock::sell(long num, double price)
{
	using std::cout;
	if (num < 0)
	{
		cout << "股票不能卖负数,你脑筋有问题?" << "中断交易了";
	}
	else if (num>shares)
	{
		cout << "你自己有几个股票不清楚吗?你能卖比自己持有还多的股票吗?!" << "交易终止!!!";
	}
	else
	{
		shares -= num;
		share_val = price;
		set_tot();
	}
}

void Stock::update(double price)
{
	share_val = price;
	set_tot();
}

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

3. 代码解析

3.1 成员函数说明 

3.2 内联方法

定义位于类声明中的函数都将自动成为内联函数,Stock::set_tot是一个内联函数。

类声明常将短小的成员函数作为内联函数。

如果愿意,可以在类声明外定义成员函数,成为内联函数。需要使用inline

class Stock
{
private:
    ...
    void set_tot();  //类声明外面定义成员函数
public:
    ...
};

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

3.3 方法使用哪个对象?

 

 

  • 1
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:酷酷鲨 设计师:CSDN官方博客 返回首页
评论

打赏作者

人工智能博士

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

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

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

打赏作者

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

抵扣说明:

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

余额充值