设为首页 加入收藏

TOP

1.5.2 初窥成员函数
2013-10-07 00:30:18 来源: 作者: 【 】 浏览:58
Tags:1.5.2 成员 函数

1.5.2  初窥成员函数

不幸的是,将Sales_item相加的程序有一个问题。如果输入指向了两个不同的ISBN将发生什么?将两个不同ISBN的数据相加没有意义。为解决这个问题,首先检查Sales_item操作数是否都具有相同的ISBN。

#include <iostream>
#include "Sales_item.h"
int main()
{
    Sales_item item1, item2;
    std::cin >> item1 >> item2;
    // first check that item1 and item2 represent the same book
    if (item1.same_isbn(item2)) {
       std::cout << item1 + item2 << std::endl;
       return 0;    // indicate success
    } else {
       std::cerr << "Data must refer to same ISBN"
                 << std::endl;
       return -1;   // indicate failure
    }
}

这个程序和前一个程序不同之处在于if测试语句以及与它相关联的else分支。在解释if语句的条件之前,我们明白程序的行为取决于if语句中的条件。如果测试成功,那么产生与前一程序相同的输出,并返回0表示程序成功运行完毕。如果测试失败,执行else后面的语句块,输出信息并返回错误提示。

1. 什么是成员函数

上述if语句的条件

// first check that item1 and item2 represent the same book
if (item1.same_isbn(item2)) {

调用命名为item1的Sales_item对象的成员函数。成员函数是由类定义的函数,有时称为类方法。

成员函数只定义一次,但被视为每个对象的成员。我们将这些操作称为成员函数,是因为它们(通常)在特定对象上操作。在这个意义上,它们是对象的成员,即使同一类型的所有对象共享同一个定义也是如此。

当调用成员函数时,(通常)指定函数要操作的对象。语法是使用点运算符(.运算符):

item1.same_isbn

意思是“命名为item1的对象的same_isbn成员”。点运算符通过它的左操作数取得右操作数。点运算符仅应用于类类型的对象:左操作数必须是类类型的对象;右操作数必须指定该类型的成员。

与大多数其他运算符不同,点运算符(“.”)的右操作数不是对象或值,而是成员的名字。

通常使用成员函数作为点运算符的右操作数来调用成员函数。执行成员函数和执行其他函数相似:要调用函数,可将调用运算符[“()”运算符]放在函数名之后。调用运算符是一对圆括号,括住传递给函数的实参列表(可能为空)。

same_isbn函数接受单个参数,且该参数是另一个Sales_item对象。函数调用

item1.same_isbn(item2)

将item2作为参数传递给名为same_isbn的函数,该函数是名为item1的对象的成员。它将比较参数item2的ISBN与函数same_isbn要操作的对象item1的ISBN。其效果是测试两个对象是否具有相同的ISBN。

如果对象具有相同的ISBN,执行if后面的语句,输出两个Sales_item对象的和。否则,如果对象具有不同的ISBN,则执行else分支的语句块。该块输出适当的错误信息并退出程序,返回-1。回想main函数的返回值被视为状态指示器。本例中,返回一个非零值表示程序未能产生期望的结果。

习题                                                                                 

习题1.24  编写程序读入几笔不同的交易。对于每笔新读入的交易,要确定它的ISBN是否和以前的交易的ISBN一样,并且记下每一个ISBN的交易的总数。通过给定多笔不同的交易来测试程序。这些交易必须代表多个不同的ISBN,但是每个ISBN的记录应分在同一组。

< xml:namespace prefix = std />

【责任编辑:董书 TEL:(010)68476606】

回书目   上一节   下一节

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇1.4.4 读入未知数目的输入 下一篇1.4.3 if语句

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: