程序设计基础(C++)运算符重载_第1页
程序设计基础(C++)运算符重载_第2页
程序设计基础(C++)运算符重载_第3页
程序设计基础(C++)运算符重载_第4页
程序设计基础(C++)运算符重载_第5页
已阅读5页,还剩115页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、程序设计基础(c+) 运算符重载运算符重载 学习内容 类之间的关系类之间的关系 类的对象成员类的对象成员 类的嵌套类的嵌套 运算符重载运算符重载 一个类的对象作为另一个类的数据 成员 一个类中的数据成员可以是某一个类的一个对象一个类中的数据成员可以是某一个类的一个对象 在在c+中,当把一个类的对象作为新类的数据员中,当把一个类的对象作为新类的数据员 时,则新类的定义格式可表示为:时,则新类的定义格式可表示为: class x 类名类名1 成员名成员名1; 类名类名2 成员名成员名2; 类名类名n 成员名成员名n; /其它成员其它成员 ; 一个类的对象作为另一个类的数据 成员 构造函数:构造函数

2、: 如果一个类如果一个类a的对象作为另一个类的对象作为另一个类b的数据的数据 成员,则在类成员,则在类b的对象创建过程中,调用其的对象创建过程中,调用其 构造函数的过程中,数据成员(类构造函数的过程中,数据成员(类a的对象的对象 )会自动调用类)会自动调用类a的构造函数。的构造函数。 但应注意:但应注意: 如果类如果类a的构造函数为有参函数时,则在程序中的构造函数为有参函数时,则在程序中 必须在类必须在类b的构造函数的括号后面加一的构造函数的括号后面加一“:”和和 被调用的类被调用的类a的构造函数,的构造函数, 且调用类且调用类a的构造函数时的实参值必须来自类的构造函数时的实参值必须来自类b

3、的形参表中的形参的形参表中的形参 这种方法称为初始化表的方式调用构造函数。这种方法称为初始化表的方式调用构造函数。 一个类的对象作为另一个类的数据 成员 例子(以上面定义的类例子(以上面定义的类x为例):为例): 在对类在对类x的对象进行初始化时,必须首先初始化其中的对象进行初始化时,必须首先初始化其中 的子对象,即必须首先调用这些子对象的构造函数的子对象,即必须首先调用这些子对象的构造函数 类类x的构造函数的定义格式应为:的构造函数的定义格式应为: x:x(参数表(参数表0):成员):成员1(参数表(参数表1),成员),成员2(参数(参数 表表2),),成员,成员n(参数表参数表n) 说明:

4、说明: 其中,参数表其中,参数表1提供初始化成员提供初始化成员1所需的参数,参数所需的参数,参数 表表2提供初始化成员提供初始化成员2所需的参数,依此类推。所需的参数,依此类推。 并且这几个参数表的中的参数均来自参数表并且这几个参数表的中的参数均来自参数表0,另外,另外 ,初始化,初始化x的非对象成员所需的参数,也由参数表的非对象成员所需的参数,也由参数表0 提供。提供。 class date private: int year; int month; int day; public: date(int fyear,int fmonth, int fday) cout构造日期endl; yea

5、r=fyear; month=fmonth; day=fday; void print() coutyear= year month=month day=dayendl; ; class time private: int hour; int minute; int second; public: time() cout构造时间endl; hour =0; minute=0; second=0; void print() couthour=hour minute=minute second=secondendl; ; 例子1 class schedule private: date mdate

6、; time mtime; int num; public: schedule(int x,int y, int z, int k ): mdate(x,y,z) cout构造时间安排endl; num = k; void print() coutnumber= num endl; mdate.print(); mtime.print(); ; int main() schedule sche1(2009,9,10,1); sche1.print(); schedule sche2(2010,10,20,2); sche2.print(); return 0; 结果:结果: 构造日期构造日期

7、构造时间构造时间 构造时间安排构造时间安排 number=1 year=2009 month=9 day=10 hour=0 minute=0 second=0 构造日期构造日期 构造时间构造时间 构造时间安排构造时间安排 number=2 year=2010 month=10 day=20 hour=0 minute=0 second=0 例子2 class date private: int year; int month; int day; public: date(int fyear,int fmonth, int fday) cout构造日期endl; year=fyear; mon

8、th=fmonth; day=fday; void print() coutyear=year month=month day=dayendl; ; class time private: int hour; int minute; int second; public: time(int a,int b,int c) cout构造时间endl; hour =a; minute=b; second=c; void print() couthour=hour minute=minute second=secondendl; ; class schedule private: date mdate

9、; time mtime; int num; public: schedule(int x,int y,int z,int a,int b,int c,int k ) :mdate(x,y,z),mtime(a,b,c) cout构造时间安排endl; num=k; void print() coutnumber=numendl; mdate.print(); mtime.print(); ; int main() schedule sche1(2005,9,10,3,10,0,1); sche1.print(); schedule sche2(2004,8,3,4,5,7,2); sche2

10、.print(); return 0; 结果:结果: 构造日期构造日期 构造时间构造时间 构造时间安排构造时间安排 number=1 year=2005 month=9 day=10 hour=3 minute=10 second=0 构造日期构造日期 构造时间构造时间 构造时间安排构造时间安排 number=2 year=2004 month=8 day=3 hour=4 minute=5 second=7 一个类的对象作为另一个类的数据 成员 调用构造函数的顺序:调用构造函数的顺序: 在构造新类的对象过程中,系统首先调用其子对象在构造新类的对象过程中,系统首先调用其子对象 的构造函数,初始

11、化子对象的构造函数,初始化子对象 然后才执行类然后才执行类x自己的构造函数,初始化类中的非对自己的构造函数,初始化类中的非对 象成员。象成员。 对于同一类中的不同子对象,系统按照它们在对于同一类中的不同子对象,系统按照它们在类类中中 的说明顺序的说明顺序调用相应的构造函数进行初始化,而不调用相应的构造函数进行初始化,而不 是按照初始化表的顺序。是按照初始化表的顺序。 例子:例子: 以下定义了三个以下定义了三个student、teacher和和tourpair, 其中其中student类的对象和类的对象和teacher类的对象作为了类的对象作为了 tourpair的数据成员的数据成员 观察对象的

12、构造过程和构造函数被执行的顺序。观察对象的构造过程和构造函数被执行的顺序。 例子 class student public: student() coutconstruct student.n; semeshours=100; gpa=3.5; protected: int semeshours; float gpa; ; class teacher public: teacher() coutconstruct teacher.n; ; class tutorpair public: tutorpair() coutconstruct tutorpair.n; protected: stud

13、ent student; teacher teacher; ; 例子 int main() tutorpair tp; coutback in main.n; return 0; 运行结果:运行结果: construct student. construct teacher. construct tutorpair. back in main. 另外一个例子 class student public: student(char *pname=no name) cout构造新同学:pnameendl; strncpy(name,pname,sizeof(name); namesizeof(nam

14、e)-1=0; student(student strcpy(name, copy of ); strcat(name,); student() cout析构 nameendl; protected: char name40; ; 另外一个例子 class tutor public: /此为初始化表,调用 /student的拷贝构造函数 tutor(student protected: student student; ; int main() /此处调用student的构造函数 /student(char *pname=no name) student st1; student

15、st2(zhang); /同上 /此处调用tutor的构造函数tutor(student /在构造tutor对象的过程中,用初始化表调用 /student类的拷贝构造函数student(student 构造新同学:构造新同学:no name 构造新同学:构造新同学:zhang 构造构造copy of zhang 构造指导教师构造指导教师 析构析构 copy of zhang 析构析构 zhang 析构析构 no name 类的嵌套 在类中可以定义用户定义的数据类型在类中可以定义用户定义的数据类型 在类说明中也可以定义类在类说明中也可以定义类 类的嵌套:一个类的说明包含在另一个类的嵌套:一个类的

16、说明包含在另一个 类的说明中类的说明中 # include using namespace std; class cc class c1 private: . public: . ; public: class c2 private: . public: . ; c1 f1(c2); ; c1是类cc的私有嵌套类,类 cc外的函数中不能使用它 类c2是类cc的共有嵌套类, 可以在cc类外使用,但类名 应该为cc:c2 如在main()中定义: c1 a, b; c2 a, b; cc:c1 a, b cc:c2 a, b 嵌套类的使用并不方便,嵌套类的使用并不方便, 不宜多用!不宜多用! 运算

17、符重载 c+语言中预定义的运算符的操作对象只语言中预定义的运算符的操作对象只 能是基本的数据类型能是基本的数据类型 但是,在实际应用中,对于很多用户自定但是,在实际应用中,对于很多用户自定 义的数据类型(如类)也需要类似的功能义的数据类型(如类)也需要类似的功能 需要对已有的运算符赋予多种含义,使同一需要对已有的运算符赋予多种含义,使同一 个运算符作用于不同类型的数据时导致不同个运算符作用于不同类型的数据时导致不同 类型的行为类型的行为 运算符重载运算符重载 优点优点 允许改变使用系统内部的运算的操作方式,允许改变使用系统内部的运算的操作方式, 以适应用户新定义类型的类似运算以适应用户新定义类

18、型的类似运算 运算符重载 运算符重载的实质是函数重载运算符重载的实质是函数重载 c+ 语言中每个运算符对应着一个运算符语言中每个运算符对应着一个运算符 函数,在实现过程中把指定的运算表达式函数,在实现过程中把指定的运算表达式 中的运算符转化为对运算符函数的调用中的运算符转化为对运算符函数的调用 表达式中的运算对象转化为运算符函数的实表达式中的运算对象转化为运算符函数的实 参,这个过程是在编译阶段完成的参,这个过程是在编译阶段完成的 例如:例如: int a=1,b=2; a+b; 表达式表达式a+b在编译时,将被解释成为函数调在编译时,将被解释成为函数调 用的形式用的形式 operator+(

19、a,b); operator是一个关键字,它与后面的是一个关键字,它与后面的+共同共同 组成了该运算符函数的函数名组成了该运算符函数的函数名 运算符重载使得用户自定义的数据以一种更简洁的方式工作运算符重载使得用户自定义的数据以一种更简洁的方式工作 例如例如 int x , y ; y = x + y ; matrix m1 , m2 ;/ 矩阵类对象矩阵类对象 m1 = madd ( m1 , m2 ) ;/ 调用函数计算两个矩阵的和调用函数计算两个矩阵的和 complex c1 , c2 ; / 复数类对象复数类对象 c1 = cadd (c1 , c2 ) ;/ 调用函数计算两个复数的和调

20、用函数计算两个复数的和 能表示为能表示为 c1 = c1 + c2 ; ? 能表示为能表示为 m1 = m1 + m2 ; ? 运算符重载 运算符重载 +-*/% class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() calculator counter ; int i ; for( i = 0 ; i 5 ; i + )

21、 + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! endl ; exit( 0 ) ; unsigned int calculator:operator() () return

22、value ; #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() calculator counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counte

23、r() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! endl ; exit( 0 ) ; unsigned int calculator:operator() () return value ; #include #include using nam

24、espace std; class calculator public: calculator() value = 0 ; ; void () ; void () ; unsigned int () ; private: unsigned int value; ; int main() calculator counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter

25、() ; #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() calculator counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i =

26、 0 ; i = 5 ; i + ) - counter; cout n counter = 0 ) value - ; else cout n data overflow ! endl ; exit( 0 ) ; unsigned int calculator:operator() () return value ; void calculator : () if ( value 65535 ) value + ; else cout ndata overflow ! endl ; exit( 0 ) ; #include #include using namespace std; clas

27、s calculator public: calculator() value = 0 ; ; void () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() calculator counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = 0

28、 ) value - ; else cout n data overflow ! endl ; exit( 0 ) ; unsigned int calculator:operator() () return value ; void calculator : () if ( value 65535 ) value + ; else cout ndata overflow ! endl ; exit( 0 ) ; 使用使用 系统预定义版本系统预定义版本 #include #include using namespace std; class calculator public: calcula

29、tor() value = 0 ; ; void operator + () ; void () ; unsigned int operator() () ; private: unsigned int value; ; int main() calculator counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:o

30、perator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! endl ; exit( 0 ) ; #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void () ; unsigned int operator() () ; private: unsigned i

31、nt value; ; int main() calculator counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data

32、 overflow ! endl ; exit( 0 ) ; 使用使用 系统预定义版本系统预定义版本 #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() calculator counter ; int i ; for( i = 0 ; i 5

33、 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! endl ; exit( 0 ) ; unsigned int calculator:operator() ()

34、 return value ; + counter; 调用重载版本调用重载版本 void operator + () ; #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() calculator counter ; int i ; for( i

35、 = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! endl ; exit( 0 ) ; unsigned int calculator:ope

36、rator() () return value ; 调用重载版本调用重载版本 + counter; void operator + () ; #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() calculator counter ; int

37、i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! endl ; exit( 0 ) ; unsigned int calc

38、ulator:operator() () return value ; 调用重载版本调用重载版本 void operator + () ; #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() calculator counter ; int i

39、 ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! endl ; exit( 0 ) ; unsigned int calcu

40、lator:operator() () return value ; - counter; 调用重载版本调用重载版本 void operator - () ; #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() calculator count

41、er ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! endl ; exit( 0 ) ; unsigned

42、 int calculator:operator() () return value ; 调用重载版本调用重载版本 - counter; void operator - () ; #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() calcul

43、ator counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! endl ; exit( 0 )

44、; unsigned int calculator:operator() () return value ; 调用重载版本调用重载版本 void operator - () ; #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() calcula

45、tor counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! endl ; exit( 0 ) ;

46、 unsigned int calculator:operator() () return value ; counter () ; 调用重载版本调用重载版本 void operator () () ; #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int m

47、ain() calculator counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! endl

48、; exit( 0 ) ; unsigned int calculator:operator() () return value ; counter () ; void operator () () ; 被重载的运算符被重载的运算符 #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int

49、 value; ; int main() calculator counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data o

50、verflow ! endl ; exit( 0 ) ; unsigned int calculator:operator() () return value ; counter () ; void operator () () ; 函数参数表函数参数表 #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: u

51、nsigned int value; ; int main() calculator counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; i = 5 ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else co

52、ut n data overflow ! endl ; exit( 0 ) ; unsigned int calculator:operator() () return value ; #include #include using namespace std; class calculator public: calculator() value = 0 ; ; void operator + () ; void operator - () ; unsigned int operator() () ; private: unsigned int value; ; int main() cal

53、culator counter ; int i ; for( i = 0 ; i 5 ; i + ) + counter; cout n counter = counter() ; for( i = 0 ; ; i + ) - counter; cout n counter = counter() ; void calculator:operator + () if ( value 65535 ) value + ; else cout ndata overflow ! 0 ) value - ; else cout n data overflow ! ”不能重载为友元函数不能重载为友元函数

54、当运算符重载为类的成员函数时,函数参当运算符重载为类的成员函数时,函数参 数的个数比原来运算对象数少一个(右数的个数比原来运算对象数少一个(右+ 和右和右除外)除外) 当重载为类的友元函数时,参数个数与原当重载为类的友元函数时,参数个数与原 运算符的运算数个数相同运算符的运算数个数相同 单目运算符最好重载为类的成员函数,而单目运算符最好重载为类的成员函数,而 双目运算符最好重载为类的友元函数双目运算符最好重载为类的友元函数 类运算符 对于双目元算符对于双目元算符 如果要重载为类如果要重载为类x的运算符,使之实现表的运算符,使之实现表 达式达式oprd1oprd2 其中其中orpd1是类是类x的

55、对象,则的对象,则 把把重载为类重载为类 x的成员函数的成员函数 该函数该函数只有一个形参只有一个形参,形参的,形参的类型是类型是oprd2 所属的类型所属的类型 编译器把表达式编译器把表达式oprd1oprd2解释为函解释为函 数调用:数调用: oprd1.operator(oprd2) 类运算符 对于前置单目元算符对于前置单目元算符 如果要重载为类如果要重载为类x的运算符,用来实现表的运算符,用来实现表 达式达式oprd,其中,其中orpd是类是类x的对象,的对象, 则把则把重载为类重载为类x的成员函数的成员函数 该函数没有形式参数该函数没有形式参数 编译器把表达式编译器把表达式oprd解

56、释为函数调用解释为函数调用 oprd.operator( ) 类运算符的例子 class sample private: int x; public: sample() sample(int a) x = a; void disp() coutx=xendl; sample operator+(sample sample operator-(); ; sample sample:operator +(sample robj.x = x+s.x; return robj; sample sample:operator -() sample robj; robj.x = -x; return ro

57、bj; int main() sample obj1(10); sample obj2(20); sample obj3; sample obj4; obj3 = obj1+obj2; obj4 = obj1 + obj2 + obj3; obj3.disp (); obj4 = -obj1; obj4.disp(); 运行结果:运行结果: x=30 x=-10 友元运算符 对于双目元算符对于双目元算符 如果它的一个操作数为类如果它的一个操作数为类x的对象的对象,当把它重当把它重 载为类载为类x的友元运算符时,使之能够实现表的友元运算符时,使之能够实现表 达式达式oprd1oprd2,其中,其

58、中oprd1是类是类x的对的对 象,则象,则 把把重载为类重载为类x的友元函数;的友元函数; 该函数有两个形参该函数有两个形参,其中一个形参的类型是,其中一个形参的类型是x类类 编译器把表达式编译器把表达式oprd1oprd2解释为函数解释为函数 调用:调用: operator(oprd1,oprd2) 友元运算符 对于前置单目元算符对于前置单目元算符 如果要实现表达式如果要实现表达式oprd,其中,其中oprd是是 类类x的对象,则的对象,则 可以把可以把重载为类重载为类x的友元函数的友元函数 该函数的形式参数为类该函数的形式参数为类x的对象的对象oprd 编译器把表达式编译器把表达式opr

59、d解释为函数调用解释为函数调用 operator(oprd) 友元运算符例子 class sample private: int x; public: sample() sample(int a) x=a; void disp() coutx=xendl; friend sample operator+(sample friend sample operator-(sample ; sample operator +(sample robj.x=s1.x+s2.x; return robj; sample operator -(sample robj.x=-s.x; return robj;

60、int main() sample obj1(10); sample obj2(20); sample obj3; sample obj4; obj3=obj1+obj2; obj3.disp(); obj4=-obj1; obj4.disp(); return 0; 另一个例子 class complex private: double r; double i; public: complex(double x=0.0,double y=0.0) r=x; i=y; complex operator+(const complex friend complex operator-(const

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论