c ++类对象作为函数参数

时间:2018-10-09 11:50:22

标签: c++

我正在做C ++作业,我看到一个奇怪的语法:

class A{
private:
    string name;
public:
    A(string n) :name(n){}
    friend bool operator < (const class A& a1, const class A &a2);
}

函数class的声明中有operator <个关键字。我以前从未见过。这是一个好习惯吗,还是我们只需要删除class关键字即可?

1 个答案:

答案 0 :(得分:3)

它们是合法的,通常不是必需的。

仅当A是什么时有歧义时才需要。

例如:

#include <string>

extern void A();

class A
{
private:
    std::string name;
public:
    A(std::string n) :name(n){}
    friend bool operator < (const class A& a1, const class A &a2);
};

// removing `class` here would result in a compiler error as it would be
// ambiguous as to whether you meant the function A or the class A
bool operator < (const class A& a1, const class A &a2)
{
    return a1.name < a2.name;
};