string isbn() ;为啥isbn()可以调用empty()呢

string isbn() ;为什么isbn()可以调用empty()呢?
本帖最后由 mingzhentanwo 于 2015-02-13 15:14:38 编辑
问题来源:c++ primer 5th  练习7.13


struct Sales_data
{
//构造函数
Sales_data(istream& is){...}
//成员函数
 string isbn() const { return bookNo; }
.....
};


int main()
{
   Sales_data  total(cin);
    if (!total.isbn().empty())// 为什么函数isbn() 可以调用empty()?
    {
       ....
    }
    return 0;
}

我知道假设A是string的一个对象,可以调用string类的成员函数empty(),即A.empty()。现在想问的是:
isbn()是个函数,为什么也可以调用empty()呢?
难道函数isbn()也可以是string的对象吗?
调用empty()与Sales_data 对象total有关系吗?
------解决思路----------------------
total.isbn()  返回的是string。
string可以调用empty().

------解决思路----------------------
total.isbn().empty()
相当于:
(total.isbn()).empty()
最重要的是要理解isbn返回string.也就是说total.isbn()相当于一个string对象.