【C++】抽象和类(2)--如何实现类成员函数?
【摘要】 目录
1 实现类成员函数
成员函数的定义有两个特殊的特征
类方法的完整 名称包括类名
类方法可以直接 访问私有成员!!!
2 代码示例
stock00.h
stock00.cpp
3. 代码解析
3.1 成员函数说明
3.2 内联方法
3.3 方法使用哪个对象?
请大家回顾第一讲:
【C++】抽象和类(1)--OOP编程特性、类规范基本组成、接口...
目录
请大家回顾第一讲:
【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 方法使用哪个对象?
文章来源: kings.blog.csdn.net,作者:人工智能博士,版权归原作者所有,如需转载,请联系作者。
原文链接:kings.blog.csdn.net/article/details/98037240
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)