C++ 将代码从成员函数转换为非成员函数 #包括 使用名称空间std; 阶级家庭 { 私人: 双倍重量; 双高; 公众: 家庭(双x,双y); ~family(); 双getWeight(); 双getHeight(); 双设定重量(); 双设定高度(); 布尔运算符==(常数族&)常数; }; 布尔族::运算符==(常量族和b)常量 { 返回权重==b.权重; } 族::族(双x,双y) { 重量=x; 高度=y; } 双族::getWeight() { 返回重量; } 双族::getHeight() { 返回高度; } 家族::~family(){} int main() { a族(70.0175.2); b族(68.5178.2); 如果(a==b) cout

C++ 将代码从成员函数转换为非成员函数 #包括 使用名称空间std; 阶级家庭 { 私人: 双倍重量; 双高; 公众: 家庭(双x,双y); ~family(); 双getWeight(); 双getHeight(); 双设定重量(); 双设定高度(); 布尔运算符==(常数族&)常数; }; 布尔族::运算符==(常量族和b)常量 { 返回权重==b.权重; } 族::族(双x,双y) { 重量=x; 高度=y; } 双族::getWeight() { 返回重量; } 双族::getHeight() { 返回高度; } 家族::~family(){} int main() { a族(70.0175.2); b族(68.5178.2); 如果(a==b) cout,c++,C++,基本上,成员函数和非成员函数之间的唯一区别在于,它传递了一个隐式这个指针以及任何其他参数,并且它可以访问私有/受保护的成员。因此,要将任何成员函数转换为非成员函数,只需将其从类中排除定义。使其成为该类的友元,并添加一个引用该类的参数。调用该类时传入该类的对象。您还可以对该函数执行常量和。您可以使用友元函数,并使用对象作为该函数的参数,就像我们在更好地显示相关代码中使用的那样并删除不相关的。失败尝试的代码在哪里?不要在返回权重==b.weight;中将double与=进行比较;你的意思是朋友布尔运

基本上,成员函数和非成员函数之间的唯一区别在于,它传递了一个隐式
这个
指针以及任何其他参数,并且它可以访问
私有/受保护的
成员。因此,要将任何成员函数转换为非成员函数,只需将其从
类中排除定义。使其成为该类的
友元
,并添加一个引用该类的参数。调用该类时传入该类的对象。您还可以对该函数执行
常量和

您可以使用友元函数,并使用对象作为该函数的参数,就像我们在更好地显示相关代码中使用的那样并删除不相关的。失败尝试的代码在哪里?不要在
返回权重==b.weight;
中将
double
=
进行比较;
你的意思是
朋友布尔运算符==(const family&,const family&);
?为什么
如果(a==b)
那么
a大于b
#include <iostream>
using namespace std;

class family
{
private:
    double weight;
    double height;
public:
    family(double x,double y); 
    ~family();
    double getWeight();
    double getHeight();
    double setWeight();
    double setHeight();
    bool operator==(const family &)const; 
};

bool family::operator ==(const family &b)const
{
         return weight==b.weight;
}     

family::family(double x, double y)
{
    weight = x;
    height = y;
}

double family::getWeight()
{
    return weight;
}

double family::getHeight()
{
    return height;
}

family::~family(){}

int main()
{
 family a(70.0,175.2);
 family b(68.5,178.2);

 if(a==b)
 cout << "A is bigger than B" << endl;
 else
 cout << "A is smaller than B" << endl;

return 0;
}
class family
{
private:
    double weight;
    double height;
public:
    family( double x, double y );
    ~family( );

    // getters should be const
    double getWeight( ) const;
    double getHeight( ) const;
    double setWeight( );
    double setHeight( );
};
// no reason to make it friend of class
// b/c it does not work with private/protected members 
bool operator==( const family & first, const family & second );

// better to move into cpp file
bool operator==( const family & first, const family & second )
{
    return first.getWeight( ) == second.getWeight( );
}
bool operator==(const family first, const family second) 
{
if(first.getWeight( ) == second.getWeight( )){
return True;
else
 return False;
}