机械中的重载是超过多少n
A. 运算符重载问题
最大的错误就是对与“+”运算符的重载问题上,你每次都是在重载函数中,定义Teacher A; ,实际上,编译时出现错误提示:没有相应的构造函数去调用。因为你的构造函数都需要参数,一个是需要2个参数,一个需要4个参数,又没有使用默认构造函数或是为参数赋与初始的默认值,这样的话,当你只是去声明Teacher A; 时,就会没有相应的构造函数可供调用;
那么正确的方法应该是这样的,此例由于Teacher的数据成员比较多,所以构造这样一个对象不太值得,我觉得最好使用重载"+="运算符的方法:
Teacher &
Teacher::operator += (Teacher &temp)
{
salary += temp.salary;
return *this;
}
也就是说,返回的是引用,参数也是引用类型,然后return *this; 你可以仔细体会一下
我把程序改了改,你看看,不知道是不是你想实现的效果 :)
#include<iostream>
#include<string.h>
using namespace std;
class Teacher
{
char name[10];
char ID[20];
float bonus;
float income_tax;
public:
float salary;
float real_income;
Teacher (char *, char *);
Teacher (char *, char *, float, float, float);
void SetIncome ();
float cal_realincome ()
{
real_income = salary + bonus - income_tax;
return real_income;
}
//void Add(Teacher*);
////void Add(float);
Teacher& operator+= (Teacher &);
Teacher& operator+= (float);
void display ();
~Teacher (void) {};
};
Teacher::Teacher (char *n, char *I)
{
strcpy (name, n);
strcpy (ID, I);
}
Teacher::Teacher (char *n, char *I, float s, float b, float t)
{
strcpy (name, n);
strcpy (ID, I);
salary = s;
bonus = b;
income_tax = t;
}
void
Teacher::SetIncome ()
{
cout << "Please input Teacher " << name << "'s salary:";
cin >> salary;
cout << "Please input Teacher " << name << "'s bonus:";
cin >> bonus;
cout << "Please input Teacher " << name << "'s personal income tax:";
cin >> income_tax;
}
void
Teacher::display ()
{
cout << "Teacher " << name << "'s ID is " << ID << endl;
cout << "Teacher " << name << "'s salary is " << salary << endl;
cout << "Teacher " << name << "'s bonus is " << bonus << endl;
cout << "Teacher " << name << "'s personal income tax is " << income_tax << endl;
cout << "Teacher " << name << "'s real income is " << real_income << endl;
}
Teacher &
Teacher::operator += (Teacher &temp)
{
salary += temp.salary;
return *this;
}
Teacher &
Teacher::operator += (float temp)
{
salary += temp;
return *this;
}
int main ()
{
Teacher teacher1 ("wang", "200631610203");
Teacher teacher2 ("zhang", "200631610204", 2000, 2000, 500);
teacher1.SetIncome ();
teacher1.cal_realincome ();
teacher1 = teacher1 + teacher2;
teacher1.display ();
// while (1);
}
B. 关于机械设计中的高低速和轻重载
1、在设计中切忌使用“高速、低速、轻载、重载”等一些含糊的字眼,因为这些都是相对而言的。例如:两个齿轮同样是每分钟1000转,一个齿轮的直径为40mm,另一个齿轮的直径为400mm,那么大齿轮的齿部线速度要比小齿轮大得多。所以,在设计中(如齿轮传动、皮带传动、链传动等)均采用线速度来描述转速。
2、由于工作的环境的不同、负载的稳定程度不同------等因素影响,在正规设计时都要在计算值上乘以一系列的系数,以齿轮举例,有:使用系数、动载系数、齿向载荷分布系数、齿间载荷分布系数、端面重合度系数、轴向重合度系数、应力修正系数-----等等。这些系数在机械设计手册上有图表,可以查出。
3、综上所述,正规的机械设计是比较繁琐的,一般工作中我们只要知道有这些系数、到哪里去查就行了。如果不是非常非常重要的零件,大多采用类比法:即参考类似的零件去确定其用料和外形尺寸,而不必去计算这些系数。这时,经验的积累就显得极为重要。
C. 机械类书籍中常谈到重载,如何区分轻载中等载荷和重载呢
我觉得不可一概而就,象凸轮工作时的轻,中,重就和齿轮工作时的就不一样,不同的机械设备对这个都是有不同的规定,也就是具体问题具体看待.在我看来是没有严格的规定.
D. 单目运算符重载问题
这个问题分两部来分析,一个符号优先级,一个是引用的问题。
首先说符号优先问题:在所有的符号中“=”号,也就是赋值运算符的优先级是最低的;那这样一来。++操作是首先执行的,也就是先++n,然后再赋值。
第二问题是引用的问题,引用简单的理解,就是可以对原来的内存进行修改。
接下来分析一下程序:
1、有引用
++n执行完是,21,再将自身返回,注意是返回引用,也就是说后续的操作都会影响到自身。那执行=的时候,n就会被m赋值,最后就是0,强调一下,引用!!
2、没引用
++n执行完是,21,再将自身返回,注意是没有引用,那也就是说,返回的是临时的一个拷贝,相当于是这样的:temp = ++n; temp = m;也就是说m的操作只是对临时的空间进行赋值,根本就没影响到n,因此n只做++操作。结果也就是21了!!
结束了,分给我吧。
E. 机械设计中,重载,轻载的区分
这个要看传动方式,链传动、齿轮传动等等,比如齿轮传动中有个使用(工况)系数Ka,按工作中的冲击和动力机的组合来确定的,还有就是跟材料及工作环境有关,
F. 电机重载是什么
电机重载是指电机启动瞬间负载重,功率因数大。
是不是重载启动是看启动时的负荷情况而定。比如说起重机提升启动时负载一直都是加载在电机上的,所以就是重载启动,而一般的风机、水泵的负载是和转速成正比,启动时转速从0到正常转速启动负载是逐步增加到正常负荷,因此不是重载启动。而普通的机床是启动后再进行加工作业的,属于空载启动。
电机重载的本质是转动惯量,即电机静转矩,就是当电机静止时要使起转动所需的力矩。用公式GD^2=n KG*M^2来表达,n越大,所需转动力矩越大,依照这个大小就可以判断是否属于重载。
重载的概念在各个领域界定不同,风机、水泵这种平方转矩类的负载,负荷为流体的不认为是重载启动。而水泥行业的球磨机,钢铁行业的轧钢机,煤矿行业的皮带机通常认为是重载启动。
轻载启动是正常的启动方式,它对电动机绕组不会造成破坏性影响;重载启动是一种不得不而而为之的启动方式。在需要重载启动时必须改变电动机的启动方式。
G. C++中的“重载”是什么意思
C++中重载很重要,重载就是一个函数名对应着多个功能不一函数体,比如通过重载operator+,
int operator+(int x , int y ){完成加法}
char * operator+(char * x,char *y){完成字符串连接}
a+b调用operator+函数;系统判断a,b类型,
如果a,b是整数,a=1,b=2,则a+b=3,
当a 为字符串”hello"时,b为“world”,则a+b为“hello world”
H. 一般说的“重载情况”中的重载是指多少载荷有没有具体标准
载荷重轻一般都是相对而言,在不同的场合有不同值.但在具体的场合时,通常承受额定负荷时为满载,比较接近满载时为重载.没有具体标准值.