[1][C++]友元函数、运算符重载以及期末考试后的一些反思
自行设计一个Fox类,有int size和int power两个对象。~表示狐狸飘了,size变为三分之一。&&表示两个狐狸合体,size等于两狐狸size之和,power等于两狐狸的平均值。
并用如下main函数测试:
int main()
{
int s1,s2,s3,s4;
cin>>s1>>s2>>s3>>s4;
Fox a1(s1,s2);
a1.display();
~(~a1);
a1.display();
Fox a2(s3,s4);
Fox a3=a1 && a2;
a3.display();
};
代码如下:
class Fox
{
protected:
int size; //体型
int power; //力量
public:
int display() //显示函数
{
cout<<size<<" "<<power<<endl;
}
Fox(int size,int power):size(size),power(power) //带参构造
{
};
friend Fox& operator~(Fox& a) //~运算符重载,表示“飘了”。
{
a.size/=3;
return a;
}
friend Fox operator&&(const Fox& a,const Fox& b) //~运算符重载,表示“合体”。
{
int size=a.size+b.size;
int power =(a.power+b.power)/2;
return Fox(size,power);
}
};
现在看来太简单的代码,但当时就是写不出来,对Visual Studio也不熟悉,浪费了很多时间在配置上。
我在C++学习上并没有倾注大量时间,所以成绩不好也是理所当然。但是这次失利也让我怀疑起了我在学习写代码方面是不是天赋欠缺。
我以后如果要考北京大学的CS,这样的学习态度肯定是不行的。更别谈出国、进硅谷大厂了。
一直以来,我都以为我在学习写代码方面很有天赋,但今天这件事给我拉回现实。
希望以后能吸取教训,多思考,写读多写,别再沉浸于虚假的优越感了。

浙公网安备 33010602011771号