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;
}