C期末考试复习重点易错知识点

合集下载

c语言期末知识点总结

c语言期末知识点总结

c语言期末知识点总结c语言考试很难,要伙伴们不要挂科哦。

以下是小编为大家整理的c语言期末知识点总结,希望大家能喜欢。

总体上必须清楚的:1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if 和switch)2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。

3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.4)bit是位是指为0或者1。

byte是指字节,一个字节=八个位.5)一定要记住二进制如何划成十进制。

概念常考到的:1、编译预处理不是c语言的一部分,不再运行时间。

c语言编译的程序称为源程序,它以ascii数值存放在文本文件中。

2、每个c语言程序中main函数是有且只有一个。

3、在函数中不可以再定义函数。

4、算法的是一定要有输出的,他可以没有输入。

5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低。

4.1数组的概念1.问题的提出假设我们将26个数分别存放在26个变量中,要计算26个变量的和,如何做?将26个变量逐个加起来?能否使用循环语句?for(sum=0,i=0;i<26;i++)sum=sum+i;正确吗?2.使用数组解决问题(掌握)定义一个变量,包含26个数据,称为数组变量。

main(){inti,sum=0,a[26];for(i=0;i<26;i++)scanf(“%d”,&a[i]);for( i=0;i<26;i++)sum=sum+a[i];printf("%d"sum);}c语言为这些数据,提供了一种构造数据类型:数组。

所谓数组就是一组具有相同数据类型的数据的有序*。

这些数据被称为数组的元素。

4.2一维数组的定义和引用4.2.1一维数组的定义1、定义一维数组的一般方式:类型说明符指明数组元素的数据类型数组名[常量表达式];指明数组所含的元素个数,下标从0开始常量表达式说明数组元素的个数,必须是大于0的整型常量表达式(包括常量和符号常量)。

C语言期末复习知识点

C语言期末复习知识点

C语言期末复习知识点C语言是一门广泛应用于编程领域的高级程序设计语言。

掌握C语言的基础知识对于理解其他编程语言和进行程序设计非常重要。

下面将介绍C语言期末复习的一些重要知识点。

1.数据类型:C语言提供了多种数据类型,包括整型、浮点型、字符型和指针等。

这些数据类型在内存中占用的空间大小是不同的,因此在使用时需要合理选择。

例如,int类型通常用于表示整数,float用于表示浮点数,char 用于表示字符。

2.变量和常量:在C语言中,变量用于存储数据,而常量是具有固定值的标识符。

声明变量时需要指定其类型,并且可以对变量进行赋值。

常量可以通过const关键字来声明,并且在声明时就需要为其赋值。

3.运算符:C语言提供了多种运算符,包括算术运算符、关系运算符、逻辑运算符和位运算符等。

了解这些运算符的优先级和使用方法对于编写复杂的表达式和条件语句非常重要。

4.控制语句:C语言的控制语句包括条件语句和循环语句。

条件语句用来根据条件的真假来执行不同的代码块,包括if语句、switch语句等。

循环语句用来重复执行其中一段代码,包括for循环、while循环和do-while循环等。

5.函数:函数是C语言中的基本模块,用于实现特定的功能。

在函数定义中需要指定函数的返回类型、函数名和参数列表,并在函数体中编写具体的代码。

通过函数的调用可以执行相应的功能。

6.数组和指针:数组和指针是C语言中非常重要的概念。

数组用于存储一组相同类型的数据,可以通过下标来访问数组中的元素。

指针是一个变量,它存储了一个内存地址。

通过指针,可以访问和修改内存中的数据。

7.结构体和联合体:结构体和联合体用于组织多个不同类型的数据。

结构体可以将多个不同类型的变量组合成一个整体,方便对这些变量进行管理。

联合体是一种特殊的结构体,它可以在相同的内存空间中存储不同类型的数据。

8.文件操作:C语言提供了用于文件操作的函数,例如打开文件、读写文件和关闭文件等。

C语言易错点考点(完整版)

C语言易错点考点(完整版)

总体上必须清楚的:1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if和switch)2)用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”;源程序经编译后生成后缀名为“.obj”的目标文件;再把目标文件与各种库函数连接起来,生成“.exe”的可执行文件。

3)main函数,又称主函数,每个C程序有且只有一个main函数;无论main函数在整个程序中的位置如何,程序总是从main函数开始执行、也从main函数结束。

读程序时应从main 函数开始,然后从上往下读(碰到循环做循环,碰到选择做选择)。

4)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.5)bit是位是指为0或者1。

byte是指字节,一个字节=八个位.6)一定要记住二进制如何划成十进制。

概念常考到的:1、编译预处理不是C语言的一部分,不占运行时间,不要加分号。

C语言编译的程序称为源程序,它以ASCⅡ数值存放在文本文件中。

2、每个C语言程序中main函数是有且只有一个。

3、在函数定义中不可以再定义函数、即不允许函数嵌套定义。

4、算法可以没有输入,必须要有输出。

5、break可用于循环结构和switch语句。

6、逗号运算符的级别最低。

7、任意合法的表达式一定有一个数值与它对应。

第一章1)C程序中对字母的大小写是敏感的,如A与a是不同的标识符。

注释:是对程序的说明,目的是提高程序的可读性,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,不允许嵌套注释。

3)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。

有其它元素就错了。

并且第一个必须为字母或则是下划线。

第一个为数字就错了。

关键字不可以作为用户标识符号。

main define scanf printf都不是关键字。

迷惑你的地方If 是可以做为用户标识符。

因为If中的第一个字母大写了,所以不是关键字。

C语言程序设计期末复习

C语言程序设计期末复习

C语言程序设计期末复习
一、基础知识
1、变量和运算符
变量就是程序中用来保存信息的抽象容器,可以用来记录用户输入、
程序执行时间以及中间结果等信息
C语言允许使用者定义变量,分为基本类型变量和指针变量。

其中基本类型变量有:整型int,浮点型float,字符型char,双精
度型double,无符号整型unsigned等。

运算符是对变量进行运算的符号,C语言中的运算符大致可分为三大类:算术运算符,关系运算符和逻辑运算符。

其中算术运算符包括:+、-、*、/和%;关系运算符包括:>、>=、<、<=、==和!=;
逻辑运算符包括:&&,和。

2、流程控制
程序的流程控制是应用程序中最重要的结构,在C语言中可以通过控
制语句来控制程序的执行流程。

常用的控制语句有:if、goto、while、for、switch-case等。

if语句可以根据执行条件跳过执行部分语句,节省程序执行的时间。

goto语句可以跳转到指定的语句,实现循环执行流程。

while语句可以不固定有多少次操作,根据执行条件决定是否继续执行。

for语句可以更精确的表示循环次数,避免无意识的多次循环操作,从而提高程序运行效率。

switch-case语句可以根据变量的变化值,执行不同的操作,实现复杂的逻辑判断。

3、函数。

C语言易错点常考点总结

C语言易错点常考点总结
}
3)插入结点
插入的结点为struct student *ps
q->next=ps;ps->next=p;
4)删除结点
struct student *delete(struct student *head,int n){ //要删除学号为n的人的信息
struct student *p,*q;
q=p=head;
}
p->next=NULL;
free(q);free(p);
return(head);
}
2)打印链表
void output(struct student *head){
struct student*p=NULL;
for(p=head;p->next!=NULL;p++)
printf(“%d: %lf”,p->num,p->grade);
/

双目
左结合
%
取余
双目
左结合
4
+

双目
左结合lt;= > >=
关系运算符
双目
左结合
7
==
等于(关系)
双目
左结合
!=
不等于
双目
左结合
11
&&
逻辑与
双目
左结合
12
||
逻辑或
双目
左结合
13
? :
条件运算符
三目
右结合
14
= += -= *= /= %= &= |= ^= <<= >>=
赋值
圆括号
左结合

c期末考点总结

c期末考点总结

c期末考点总结C语言是一门非常重要的编程语言,是许多计算机科学与软件工程专业的基础必修课。

期末考试是对学生学习成果的一次综合性考核,下面将总结C语言期末考点,帮助大家复习备考。

一、基础知识1. 数据类型:包括基本类型和派生类型,如int、float、char、数组、结构体等。

2. 变量和常量:如何定义变量、常量,变量的作用域和生命周期。

3. 运算符:算术运算符、关系运算符、逻辑运算符、位运算符等,以及它们的优先级和结合性。

4. 控制语句:条件语句(if-else、switch)、循环语句(while、do-while、for)。

5. 输入输出:如何从键盘获取输入,如何将数据输出到屏幕上。

6. 函数:如何定义函数、函数的参数传递和返回值。

7. 数组:如何定义和使用数组,多维数组。

8. 字符串:如何定义和使用字符串,字符串的处理函数。

9. 指针:如何定义和使用指针,指针与数组的关系。

10. 结构体和联合体:如何定义和使用结构体、联合体,结构体和指针的关系。

二、高级知识1. 动态内存分配:如何使用malloc、calloc、realloc函数进行动态内存分配和释放。

2. 文件操作:如何打开、读写、关闭文件,文件的定位指针。

3. 预处理器:如何使用宏定义、条件编译、文件包含等预处理指令。

4. 头文件:如何编写自定义的头文件并使用。

5. 递归:如何使用递归解决问题,递归的实现原理。

6. 指针与函数:如何使用指针作为函数参数,指针函数、指针数组、指针指针等。

7. 指针与字符串:如何使用指针处理字符串,字符串函数的实现。

8. 指针与结构体:如何定义指向结构体的指针,指针访问结构体成员。

9. 指针与动态内存分配:如何动态分配结构体指针,释放动态分配的内存。

10. 文件操作与结构体:如何将结构体数据保存到文件,从文件读取结构体数据。

三、综合应用期末考试通常会出一些综合性的编程题,要求学生综合运用所学知识进行程序设计。

C语言期末考试复习资料

C语言期末考试复习资料

C语言期末考试复习资料C语言复习摘要一、数据类型:基本类型(整型、实型、字符型、枚举类型),构造类型(数组、结构体、共用体)、指针类型、空类型。

基本类型也叫简单类型,构造类型也叫复杂类型二、标识符:标识符只能由字母、下划线、数字构成,且必须以字母或下划线开头,且对字母的大小写敏感。

三、常量1、整型常量,如:32,0x32,0X32,0x3f,0xea,8L,8l,0672、实型常量,如:3.14,1e23,0.8E8,0.8E-8,0.8E+83、字符常量,如:‘a’,‘\n’, ‘\w’,‘\\’,‘\0’4、字符串常量,如:“windows”,“a”,(其赋值表达式和赋值语句中其本质是一个地址常量)5、地址常量,若有定义:int k,a[10];char s[20];则:&k,a,s,NULL都是地址常量6、符号常量,用宏定义实现,如:#define PAI 3.14159267、以下都是非法常量:0xfg,3.1e2.8,‘aw’,‘w\’,0x,068四、表达式(要点:先确定表达式的类型,再确定表达式的值的类型,最后确定表达式的值):1、算术表达式(应注意变量类型的自动转换——原则:低级向高级转换):(1)、整型表达式:参加运算的都是整型量,结果也是整型数。

如:x+20*9+3(2)、实型表达式:参加运算的都是实型量,运算过程中先转换成double型,结果也是double型。

如:x+20*9+3.0,x+20*9+sqrt(3)2、赋值表达式:将赋值运算符“=”右边的值赋给左边的变量,其值为赋值后左边变量的值,类型为左边变量的类型。

如:x=3(注:若x为整型变量,则该表达式的值为整型,若x实型变量,则该表达式的值为实型)3、逻辑表达式:用逻辑运算符(!,&&,||)连接的整型量,结果为整数(0或1)。

逻辑表达式可认为是整型表达式的一种特殊形式。

如:((x=3)&&(y=0))4、关系表达式:用关系运算符将两个表达式连接起来的式子,结果为整数(0或1)。

C程序设计期末复习知识点

C程序设计期末复习知识点

C程序设计期末复习知识点1.C语言基础-了解C语言的历史和发展。

-了解C语言的特性,例如:面向过程、可移植性、高效性等。

-理解C语言的编译过程,包括预处理、编译、汇编和链接。

-掌握C语言的基本语法,包括变量定义、标识符命名规则、注释、运算符等。

2.数据类型-理解C语言的基本数据类型,包括整型、浮点型、字符型和布尔型。

-知道各种数据类型的取值范围和存储大小。

-理解数据类型之间的转换规则。

3.控制结构- 掌握条件语句,包括if语句、switch语句。

- 掌握循环结构,包括for循环、while循环和do-while循环。

- 了解循环控制语句,包括break和continue语句。

4.数组和指针-理解一维和多维数组,包括如何定义、初始化和访问数组元素。

-掌握指针的概念,包括如何定义和使用指针变量。

-理解指针和数组的关系,包括指针和数组之间的相互转换。

5.函数-理解函数的概念和作用,包括函数的定义、声明和调用。

-理解参数传递的方式,包括传值和传引用。

-理解局部变量和全局变量的作用域和生命周期。

-理解递归函数的原理和应用。

6.文件操作-了解文件的概念和类型。

-掌握文件的打开、关闭、读取和写入操作。

-知道如何创建文件、删除文件和改变文件属性。

-理解文件指针的使用,包括定位文件读写位置等。

7.结构体和联合体-理解结构体的概念,包括如何定义和使用结构体。

-掌握结构体成员的访问方式。

-了解联合体的概念和用途。

-知道结构体和联合体的区别。

8.动态内存分配- 了解动态内存分配和释放的方法,包括malloc、calloc和realloc函数。

-理解内存泄漏和内存溢出的概念和原因。

-知道如何使用指针来管理动态分配的内存。

9.字符串处理-理解字符串的概念,包括如何定义和使用字符串变量。

- 掌握字符串的输入和输出操作,包括fgets、fputs和printf函数。

- 掌握字符串的处理函数,包括strlen、strcpy、strcat、strcmp 等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++重点、易错知识点整理第一章1、泛型程序设计是指向程序中数据类型中加入类型参数的一种能力,也称为参数化的类型或参数多态性。

2、c++程序开发通常要经过5个阶段,包括编辑、预处理、编译、连接、运行与调试。

3、编译过程分为词法分析、语法分析、代码生成这3个步骤。

4、使用名字空间std的方法有3种:1、利用using namespace使用名字空间;使用方法如下:2、用域分辨符::为对象分别指定名字空间;例如:3、用using与域分辨符指定名字空间;例如:5、c++中常用操作符:第二章1、c++的数据类型:2、在定义变量的同时赋初值还有另外一种方法,就是在变量后面将初值放在括号中,格式如下:3、常变量定意格式:或※在定义常变量时,一定要赋初值,且在程序中间不能更新其值。

4、常量和非左值表达式是没有内存地址的。

5、在逻辑表达式求值中注意短路求值。

6、运算符优先级的规律:(1)运算符的优先级按单目、双目、三目、赋值依次降低;(2)算术、移位、关系、按位、逻辑运算的优先级依次降低。

7、标准c++提供了新式的强制类型转换运算,格式如下:※static_cast用于一般表达式的类型转换;※reinterpret_cast用于非标准的指针数据类型转换,如将void*转换成char*;※const_cast将const表达式转换成非常量类型,常用于将限制const成员函数的const定义解除;※dynamic_cast用于进行对象指针的类型转换。

第三章第四章1、内联函数的定义必须出现在对该函数的调用之前。

2、递归函数不能定义为内联函数。

3、说明一个内联函数只是请求而不是命令编译器对它进行扩展。

带有默认形参值的函数:1、若函数具有多个形参,则默认形参值必须自右向左连续的定义,并且在一个默认形参值的右边不能有未指定默认值的参数。

2、在调用一个函数时,若果省去了某个实参,则直到最右端的实参都要省去。

3、默认形参值的说明必须出现在函数调用之前。

若函数原型中已给出了形参的默认值,则在函数定义中不得重复制定,即使所指定的默认值完全相同也不行。

4、在同一个作用域内,一旦定义了默认形参值,就不能在定义它。

5、如果几个函数说明出现在不同的作用域内,则允许对它们提供不同的默认形参值。

6、在函数的原型给出了形参的默认值时,形参名可以省略。

第五章1、相同类型的指针类型才可以想减;两个指针是不可以相加的。

2、一个void类型的地址赋值给非void类型的指针变量,要使用类型强制转换。

3、要初始化多重指针,要从第一层开始,逐步向高层进行。

4、要将字符串q复制给p,除了使用与复制字符数组相同的三种方法外,还可用程序段:5、new的语法形式:6、new创建数组的语法格式:※下表表达式与数组初始化时的常量表达式不同,可以是变量表达式。

7、使用new建立多重数组语法格式:※再用new建立多维数组时,只有下标表达式1可以是任意正整数的表达式,而其它下标表达式必须是值为正整数的常量表达式。

8、delete语法格式:9、delete删除动态数组格式:※[]中不需要说明对象的个数。

※对于一个已分配内存的指针,只能用delete释放一次。

10、指针常量定义格式:11、常量指针定义格式:12、指针常量:指向的对象不能更改,对象的值能改。

13、常量指针:指向的对象能更改,对象的值不能更改。

14、在定义结构体类型时,只要结构体名不同,那么都是不同的类型,即使它们的成员完全相同。

第六章1、根据变量定义的位置,变量分为全局变量与局部变量。

2、根据变量的存储方法,变量分为静态变量和动态变量,具体分为4种:自动型(auto)、寄存器型(register)、外部型(extern)和静态型(static)。

※使用extern只是将一个已存在的变量、函数声明为extern变量函数,而不是定义变量,所以不能赋初值。

※当一个变量被声明为全局静态变量时,不能再被声明为extern变量。

3、c++程序的内存通常被分为4个区:(1)全局数据区(全局变量、静态变量、字符串变量和常变量)(2)代码区(所有的函数和代码)(3)栈区(为运行函数而分配的函数参数、局部变量和返回地址)(4)堆区(动态分配内存)4、宏定义可以嵌套定义、被重复定义,但不能递归定义。

5、定义名字空间的格式如下:第七章1.在类体内不允许对成员函数进行初始化。

2.定义类时,类的数据成员不占内存空间;但是,建立类的对象时,只为每个对象分配用于保存数据成员的内存,不为函数成员分配内存。

3.在定义类时,不能定义该类的变量,只能定义该类类型的指针成员和该类类型的引用成员。

4.浅拷贝和深拷贝的区别:当类的数据成员是指针类型时,深拷贝能为新的对象分配内存空间(分配内存空间一般由new运算符实现;拷贝构造函数就是深拷贝),而浅拷贝不能。

5.对象指针只能访问该类的公有数据成员和函数成员。

6.除非是作为函数参数与函数返回值,对象引用在定义时必须要初始化。

7.非静态函数有一个指向当前对象的this指针,而静态函数没有。

静态函数不属于任何类。

8.在组合类的构造函数中,初始化列表既不能决定是否调用成员对象的构造函数,也不能决定调用构造函数的顺序,成员对象调用顺序由成员对象定义的顺序决定。

9.静态变量和静态对象都只被构造一次。

10.类的静态数据成员必须进行初始化,且其初始化语句既不属于任何类,也不属于包括主函数在内的任何函数。

11.静态变量的初值缺省时为0,;动态变量的缺省初值不确定。

12.静态成员函数可以直接访问类中说明的静态成员,但不能直接访问类中的非静态成员。

13.静态数据成员不是对象成员,在引用时不需要用对象名。

(?为什么?)14.不允许常对象调用任何类的成员函数,而且常对象一旦被定义,在其生存期内不允许改变。

15.只有类的常成员函数才能访问该类的常对象;const对象不能访问非常成员函数。

16.常成员函数必须进行初始化,且初始化只能通过构造函数的初始化列表进行。

17.常成员函数的定义格式:18.常成员函数不能更新类的数据成员。

19.保护成员具有双重角色,对派生类的成员函数而言,它是共有成员,但对所在类之外定义的其它函数而言则是私有成员。

20.使用this指针返回对象则不需要调用构造函数,但会调用拷贝构造函数。

21.先建立全局变量,在建立局部变量。

构造函数的调用条件:1.建立对象时;2.建立动态对象(如p=new char)时;※定义对象指针、对象引用时均没有建立对象,所以此时不调用构造函数。

※数组元素为n,定义数组时调用构造函数的次数为n。

※一个对象可以建立多个构造函数,但是只有一个析构函数。

※构造函数没有返回值,也不能用void修饰。

※构造函数被声明定义为公有函数。

拷贝构造函数的调用条件:1.当用类的一个对象去初始化该类的另一个对象时;2.如果函数的形参是类的对象,调用函数时,将对象作为函数实参传递给函数的形参;3.如果函数的返回值是类的对象,函数执行完成,将返回值返回。

4.使用this指针返回对象。

※拷贝构造函数只能有一个参数,并且是对某个对象的引用。

※建立对象时,构造函数和拷贝构造函数有且仅有一个被调用。

※再重新定义拷贝构造函数后,默认拷贝构造函数与默认构造函数就不存在了;但是,再重新定义构造函数后,默认构造函数就不存在了,但默认拷贝构造函数还存在。

析构函数的调用条件:析构函数在程序结束时由系统自动调用。

组合对象的构造函数的调用顺序:在定义一个组合类的对象时,不仅他自身的构造函数将被调用,而且还将调用其成员函数的构造函数,调用先后顺序为:1.成员对象按照在其组合类的声明中出现的次序,依次调用各自的构造函数,而不是按初始化列表中的顺序。

2.组合类对象调用组合类构造函数。

3.调用析构函数,析构函数的调用顺序与构造函数正好相反。

构造、拷贝以及析构函数的调用顺序:对象被析构的顺序与其创建的顺序相反。

第八章1、如果几类定义了带形参表的构造函数时,派生类就应当定义构造函数。

如果积累没有定义构造函数,派生类也可以不定义构造函数。

2、派生类的构造函数和析构函数都不能被继承。

3、多继承时,对同一个基类,不允许直接继承两次。

4、最远派生类(c++将建立对象时所使用的派生类称为最远派生类)的构造函数要调用该公共基类的构造函数,而且只能被调用一次。

5、公共虚基类子对象只初始化一次。

6、c++规定,在初始化列表中同时出现对虚基类和非虚基类构造函数的调用,虚基类的构造函数优于非虚基类的构造函数的执行。

类型兼容的三种情况:1、派生类对象可以赋值给基类对象;2、派生类对象可以初始化积累的引用;3、派生类的地址可以赋值给指向基类的指针。

单继承或多继承时,派生类构造函数的调用顺序:1、调用基类的构造函数;2、调用内嵌成员对象的构造函数调用顺序按照它们在类中定义的顺序;3、派生类自己的构造函数。

单继承时,派生类的析构构造函数的调用顺序:1、调用派生类析构函数;2、然后调用派生类成员对象析构函数;3、最后调用基类析构函数。

第九章1、c++中的运算符除了“○1.○2.* ○3::○4?:○5 siziof”之外,其余全部可以被重载。

2、对于运算符重载为类的友元函数,VC++6.0不允许在声明重载运算符之前使用using namespace std,多以分别列出对cout和endl的使用:using std::cout;using std::endl;。

3、重载为类的成员函数语法形式为:4、重载为类的有原函数的定义格式:5、无法声明一个抽象类的对象。

抽象类:1、带有纯虚构函数的类被称为抽象类。

纯虚构函数的定义形式:virtual 函数类型函数名(参数表)=0;2、抽象类不能用作参数类型、函数返回值或强制类型转换;3、可以定义一个抽象类的指针和引用。

通过抽象类的指针和引用,可以指向并访问各派生类成员,这种访问具有多态特征。

成员函数运算符与友元函数运算符的特点:1、一般情况下,单目运算符最好重载为类的成员函数;双目运算符最好重载为类的友元函数。

2、一些双目运算符不能重载为类的友元函数:=、()、[ ]、->。

3、类型转换函数只能定义为一个类的成员函数而不能定义为类的友元函数。

4、如果一个运算符的操作需要对象的状态,选择重载为成员函数较好。

5、若运算符所需的操作数(尤其是第一个操作数)希望有隐式转换,则只能选用友元函数。

6、当运算符函数是一个成员函数时,最左边的操作数(或者只是最左边的操作数)必须是运算符类的一个类对象(后者是对该类对象的引用)。

如果左边的操作数必须是一个不同的对象,或者是一个基本数据类型的对象,该运算符函数必须作为一个友元函数来实现。

7、当需要重在运算符的运算具有可交换性时,选择重载为友元函数。

运算符被重载的规则:1、重载后运算符的优先级与结合性不会改变。

相关文档
最新文档