1.5.2 初识成员函数
将两个Sales_item对象相加的程序首先应该检查两个对象是否具有相同的ISBN。方法如下:
#include <iostream>
#include "Sales_item.h"
int main()
{
Sales_item item1 item2;
std::cin >> item1 >> item2;
// 首先检查item1和item2是否表示相同的书
if (item1.isbn() == item2.isbn()){
std::cout << item1 + item2 << std::endl;
return 0; // 表示成功
}else{
std::cerr << "Data must refer to same ISBN" << std::endl;
return -1; // 表示失败
}
}
此程序与上版本的差别是if语句及其else分支。即使不了解这个if语句的检测条件,我们也很容易理解这个程序在干什么。如果条件成立,如上一版本一样,程序打印计算结果,并返回0,表明成功。如果条件失败,我们执行跟在else之后的语句块,打印一条错误信息,并返回一个错误标识。
什么是成员函数?
这个if语句的检测条件
item1.isbn() == item2.isbn()
调用名为isbn的成员函数(member function)。成员函数是定义为类的一部分函数,有时也被称为方法(method)。
我们通常以一个类对象的名义来调用成员函数。例如,上面相等表达式左侧运算对象的第一部分
item1.isbn()
使用点运算符(.)来表达我们需要“名为item1的对象的isbn成员”。点运算符只能用于类类型的对象。其左侧运算对象必须是一个类类型的对象,右侧运算对象必须是该类型的一个成员名,运算结果为右侧运算对象指定的成员。
当用点运算符访问一个成员函数时,通常我们是想(效果也确实是)调用该函数。我们使用调用运算符(())来调用一个函数。调用运算符是一对圆括号,里面放置实参(argument)列表(可能为空)。成员函数isbn并不接受参数。因此
item1.isbn()
调用名为item1的对象的成员函数isbn,此函数返回item1中保存的ISBN书号。
在这个if条件中,相等运算符的右侧运算对象也是这样执行的——它返回保存在item2中的ISBN书号。如果ISBN相同,条件为真,否则为假。
普通的冒险故事提示您:看后求收藏(卧龙小说网http://www.wolongxs.com),接着再看更方便。
好书推荐:《我的剧本世界在自主运行》、《我是舰娘》、《我的师妹是妖女》、《交错世界之学院都市》、《认清现实后,她们开始追夫火葬场》、《好徒儿你就饶了为师伐》、