Object.member函数(参数).Member Function(); - 我只是不明白这一点

时间:2014-04-08 15:19:15

标签: c++

我正在开展更大的任务 - 一个虚构的网上银行数据库。所有人都很好,只需要能够响应这样的电话:

bank.Account("123456").Balance();

bank是类Bank的一个实例,它持有类Account的数组(是的,我被禁止使用大部分STL)。

思考:我需要一个功能帐户&类Bank中的Account(const char *)将成为类Account的友元函数,然后可以调用Account类中声明的Balance函数。 我这样做了吗?我并不是真的要求你为我编写代码,我只是想知道我是否朝着正确的方向前进。感谢。

3 个答案:

答案 0 :(得分:2)

  

我需要一个功能帐户&类Bank中的Account(const char *)将成为类Account的友元函数,然后可以调用Account类中声明的Balance函数。我这样做了吗?

您不需要任何friend课程或功能,只需制作获取者public

class Bank {
public:
    Account & Account ( const char * );
};

class Account {
public:
    Balance& Balance();
};

答案 1 :(得分:1)

标题中的伪代码可能应为object.MemberFunction1(arguments).MemberFunction2()。它没关系,它会正常工作。

如果MemberFunction1返回一个对象或对象的引用,则可以链接更多对返回对象(或引用)的调用。如果他们没有尝试访问和非公开成员,那么这些课程就不必成为朋友。

实际上,如果返回的对象包含一个方法,而该方法又返回了一个对象,那么你可以拥有

object.MemberFunction1(arguments).MemberFunction2().MemberFunction3();

依旧等等。

答案 2 :(得分:1)

是的,这是正确的方向。您的Bank类需要一个公共方法

Account& Account (const char*);

您的帐户类需要公共功能

int Balance();

实际上你不需要“朋友”来访问这些方法,它们只需要公开。

请注意您的帐户方法。如果您输入的帐户名称不存在,您会返回什么?也许你应该在这种情况下返回一个空的Account对象(虽然需要成为你的Bank类的成员)。在这种情况下,在调用Balance()之前,应检查返回的Account对象是否有效。