C++为什么要运算符重载?有什么好处?书上概念太多,对理解没什么用处,谁给编个简单的程序,解说一下。
4个回答
展开全部
建立一个名为Teacher的类,该类有以下成员变量:教师姓名、ID号、基本工资、奖金、所得税和实际发放数。还有以下成员函数:两个构造函数,一个用于只初始化教师姓名、ID号、一个用于初始化教师姓名、ID号基本工资、奖金和所得税;一个输入基本工资、奖金和所得税的函数;一个计算实际发放数的函数;一个输出教师信息的函数。编写主函数,调用第一个构造函数声明一个教师对象并输入其工资,再调用第二个构造函数声明一个教师对象。最后分别计算两个教师的实际发放数,并在屏幕输出。重载运算符“+”完成此题。
#include <iostream>
#include<string>
#include <iomanip>
using namespace std;
class teacher
{
private:
char name[10];
int id;
float gz;
float jj;
float sds;
float ffs;
public:
teacher(char *a,int b)
{
strcpy(name,a);
id=b;
}
teacher(char *a,int b,float c,float d,float e)
{
strcpy(name,a);
id=b;
gz=c;
jj=d;
sds=e;
}
teacher(float c,float d)
{
gz=c;
jj=d;
}
void get()
{
cout<<"请输入基本工资:";
cin>>gz;
cout<<"请输入奖金:";
cin>>jj;
cout<<"请输入所得税:";
cin>>sds;
}
void jisuan()
{
ffs=gz-(gz+jj)*sds;
}
void showteacher()
{
cout<<"姓名:"<<name<<setw(10)<<"Id号:"<<id<<setw(10)<<"工资:"<<gz<<setw(10)<<"奖金:"<<jj<<setw(10)<<"所得税:"<<sds<<setw(10)<<"实际发放数:"<<ffs<<endl;
}
teacher operator +(teacher t1)
{
return teacher(gz+t1.gz,jj+t1.jj);
}
void display()
{
cout<<"将其他教师的工资加到该教师的工资为:"<<gz<<endl;
cout<<"将其他教师的奖金加到该教师的奖金为:"<<jj<<endl;
}
};
void main()
{
teacher t("abc",123);
t.get();
t.jisuan();
t.showteacher();
cout<<endl;
teacher t1("bcd",234,3000,500,0.125);
t1.jisuan();
t1.showteacher();
teacher t2(3000,2000);
t2=t+t1;
t2.display();
}
一个简单的程序,用的重载运算符+,让两个对象相+,这就是面向对象的c++语言,具体的我肯定没有书上说得全面,所以楼主还是自己好好看看书上的基础概念。或者去网上找一些相关的问题看看,学语言是一个过程,现在不是很懂没关系,慢慢的一点一点往深处学,有些知识不知不觉就会明白了~~~
#include <iostream>
#include<string>
#include <iomanip>
using namespace std;
class teacher
{
private:
char name[10];
int id;
float gz;
float jj;
float sds;
float ffs;
public:
teacher(char *a,int b)
{
strcpy(name,a);
id=b;
}
teacher(char *a,int b,float c,float d,float e)
{
strcpy(name,a);
id=b;
gz=c;
jj=d;
sds=e;
}
teacher(float c,float d)
{
gz=c;
jj=d;
}
void get()
{
cout<<"请输入基本工资:";
cin>>gz;
cout<<"请输入奖金:";
cin>>jj;
cout<<"请输入所得税:";
cin>>sds;
}
void jisuan()
{
ffs=gz-(gz+jj)*sds;
}
void showteacher()
{
cout<<"姓名:"<<name<<setw(10)<<"Id号:"<<id<<setw(10)<<"工资:"<<gz<<setw(10)<<"奖金:"<<jj<<setw(10)<<"所得税:"<<sds<<setw(10)<<"实际发放数:"<<ffs<<endl;
}
teacher operator +(teacher t1)
{
return teacher(gz+t1.gz,jj+t1.jj);
}
void display()
{
cout<<"将其他教师的工资加到该教师的工资为:"<<gz<<endl;
cout<<"将其他教师的奖金加到该教师的奖金为:"<<jj<<endl;
}
};
void main()
{
teacher t("abc",123);
t.get();
t.jisuan();
t.showteacher();
cout<<endl;
teacher t1("bcd",234,3000,500,0.125);
t1.jisuan();
t1.showteacher();
teacher t2(3000,2000);
t2=t+t1;
t2.display();
}
一个简单的程序,用的重载运算符+,让两个对象相+,这就是面向对象的c++语言,具体的我肯定没有书上说得全面,所以楼主还是自己好好看看书上的基础概念。或者去网上找一些相关的问题看看,学语言是一个过程,现在不是很懂没关系,慢慢的一点一点往深处学,有些知识不知不觉就会明白了~~~
展开全部
因为系统自代的运算符有时候不能达到目的。 比如String 类没有+ 运算 重载之后实现字符串相连的操作
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我只简单和你说一下,程序你自己去书上找
C++是面向对象的编程语言,引入了类
操作的时候如果一个类的两个对象相加,如果你简单的将其的每一项相加,这不又回到了面向过程了吗,
所以就要使两个对象也能相加,所以这时候就要重载操作符。
C++是面向对象的编程语言,引入了类
操作的时候如果一个类的两个对象相加,如果你简单的将其的每一项相加,这不又回到了面向过程了吗,
所以就要使两个对象也能相加,所以这时候就要重载操作符。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看 C++编程思想
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询