A::x=5
A::x=5 y=20 [试题]
[2006春]选择题30 C
[2007秋]填空题10 (17)5 20 (18)5 10
[2007春]填空题10 (16)class Inh1 (17)class Inh2 (18)class Inh3 [2006春]填空题10 (16)This is a header (17)This is a footer
七、运算符重载及其应用。
[考试要求](一)用成员函数重载运算符的方法;★★★ [主要知识点]
类型 operator 运算符 (参数表) { ?? } //函数体,运算数据成员
[考试要求](二)用友元函数重载运算符的方法;★★★ [主要知识点]
friend类型operator运算符(参数表) { ?? } //函数体,运算数据成员
重载运算符时,注意:
(1)大多数运算符都可以重载,但以下运算符不可以重载: 成员运算符“?”、指针操作运算符“*”、作用域运算符“::”、三目运算符“?:”、求字节数运算符“sizeof()”。
(2)大多数运算符既可以用成员函数重载,也可以用友元函数重载,但“=”、“[ ]”、“()”和“->”只能用成员函数重载,“<<”和“>>”只能用友元函数重载。 (3)运算符重载的主要目的是为了扩充运算符的应用范围,使对象直接参与表达式的运算,但并不能改变运算符的优先级、目数和结合性等基本性质。
(4)自增、自减运算符前置和后置的区别,是通过重载运算符重载函数来实现的;后置时,增加一个只能类型、没有名称的整型形参。 (5)成员函数重载和友元函数重载的异同:
①功能相同,对象表达式也相同,但含义不同。如对于“a1+ a2”成员函数重载的含义是“a1.operator+(a2)”,而友元函数重载的含义是“operator+(a1,a2)”。 ②实现方法不同,如友元函数重载比成员函数重载多一个对象类型的参数。 [试题]
[2007秋]选择题27 A [2007春]选择题25 D
[2006秋]填空题3 (3)该类的对象或对象
[2006秋]填空题8 (12)x=4,y=35 (13)i=78 (14)x=6,y=36 [2006秋]填空题10 (17)2 3 重载2 (18)2 3 重载1
[考试要求](三)要求掌握能重载的运算符有:++、- -、+、一、*、/、=、+=、*=、/=、<<(插入运算符)、>>(提取运算符)。★★ [主要知识点] 附录1
第七部分 文件的使用。 [考试要求]
(1)文件的概念和文件的用法。
(2)文本文件的使用方法(顺序读写)。 (3)二进制文件的使用方法(顺序读写)。
在文件的使用方面,要求能掌握用构造函数打开文件和用成员函数open打开文件的方法以及以下几个成员函数的用法close(),getline()、read()、write()、eof()。 第八部分 应用程序向导的作用和用途。
第九部分 窗口界面的简单设计和应用(概念和原理)。
注1:考试要求后的★表示重要程序:无★——基本不考,★——考得较少,★★——经常考,★★★——每次必考。
附录1:常见运算符的重载方法 运算 重 符
载方式 一目运算符(++)前置 一目运算符(++)后置 二目运算符(+) 成员函数重载 类中定义 A operator++() {x++;y++;
return *this;} A operator++(int) {A t=*this; x++;y++;
return t;} A operator+(A t) {A temp; temp.x=x+t.x; temp.y=y+t.y;
return temp;} {x+=t.x; y+=t.y;
return *this;} 说明 A operator++(); A operator++(int); A operator+(A t); 类外定义 A A::operator++() {x++;y++;
return *this;} A A::operator++( int) { A t=*this; x++;y++;
return t;} A A::operator+ ( A t) {A temp; temp.x=x+t.x; temp.y=y+t.y;
return temp;} { t.x+= x; t.y+= y; return t;}
友元函数重载 类中定义 friend A operator++(A &t) {t.x++;t.y++;
return t;} friend A operator++(A &t,int) {A temp=t; t.x++;t.y++;
return temp} friend A operator+ (A t1,A t2) { A temp; temp.x=t1.x+t2.x; temp.y=t1.y+t2.y;
return temp;} { t1.x+= t2. x; t1.y+= t2.y; return t1;} 说明 (A t1,A t2);
friend A operator++(A &t);
friend A operator++(A &t,int);
friend A operator+
类外定义 A operator++(A &t) {t.x++;t.y++;
return t;} A operator++(A &t,int) { A temp=t; t.x++;t.y++;
return temp;} A operator+(A t1,A t2) { A temp; temp.x=t1.x+t2.x; temp.y=t1.y+t2.y;
return temp;} {t2.x+= t1.x; t2.y+= t1.y; return t2;}
附录2:历年VC++考试卷考点分析 2004春 2004秋 2005春 2005秋 2006春 2006秋 2007春 2007秋 选择题 21 标识符 标识符 数组定义 逻表 求值 标识符 函数return sizeof(‘a’+’b’) 22 strlen(s) 赋值 正确性 标识符 数组定义 数学表达式 常量定义 当,直到区别 23 逻辑表达式 循环,整除 strlen(p+4) 二维组指针 引用 定义 构造,析构 实参、形参 24 for 格式 sizeof( a[3][4]) 字符指针 赋值 正确性 数组初始化 for 次数 字符串输入 25 实参、形参 x++ ,f(a)+f(a) this 实参、形参 数组指针算 构造调用 数 运算符重载 26 字符数组初 函数原型说明 字符数组初 运算符重载 函数重载 派生类 基.派生,赋值 27 析构函数 访问权限 成,友,重载 构造,析构 友,静态函数 串,指针,运用 数组定义 28 指针、串输出 拷贝构造函 抽象,虚基类 结构体 派生类 基.派生,赋值 二维,指针等
29 cin 对象名 宏展开 函数定义 虚函数 数组定义 变量范围 虚函数
30 基类 派生类 构造,析构 构造调用 数 this->x=0 多态性 sizeof,strlenswitch 格式
基本概念题 1 函数重载概念 预处理三项. 数组,(*P)++ *P++ 字符串求长 逻表 求值 this switch(e)中e 2 虚, 析构 串,指针,输出 封闭性 多态性 3 循环次数 重载赋值运算 多态性 构造调用 数 封闭性 重载,左,对象 a=(m++,n+m)
4 5
字符串,指针运算,输出值 拷贝构造函 抽象类 if(j=0)
宏展开 地址传递 宏展开 标识符
派生,构造调 数组,*(P+5) this
阅读程序题 (*a)++;*a++ 指针,变复数 7 6 引用传递、全局变量 数组,地址传递,
全局,局部变量 静态,引用 全局,局部变量 值传, 同名局变
字符二维组.
8 地址传递、两次调用 地址,引用,递归.f(&y,n-2)
递归调用 引用,静态,同名 9 函数,求完数. 值传,引用传 递归调用 0,奇,偶数 10 11 递归调用 return
x+f(n+1,x+1) 静态变量,函数调用两次. 指向函数指针 移 地址传,求最大值 12 类,全局,重载++(int) 13 递归调用 f(b,m-1) 查找,前移. 指向函数指针,地址传递 14
全局,局部变量
数组,地址.交换元素.
查找,后
地,引,值传.全,静态,同名
15 虚函数、多重继承 虚函数 函返指针,字符串,查,删,移 16 虚函数、继承 虚函数、继承 虚基类,构造函数调用顺序. 17 虚函数、静态变量 类,重载,前后置++ 18 switch( ) 对称矩阵 虚函数 派生,构造调
完善程序题 19 类,排序,对象数组赋值 三位数,各不相同.是某一数的平方. 筛选法,求素数 正数在前,负数在后.指针运算 超级素数 2333 串,找最小,后移.置最前 二维数组整列后移 20 21 22 23 串中取整数,存入数组中.函数调用,指针运算 字符串,重载+=,拷贝构造函数 线性表,重载
=,>>,<< n阶勒让德多项式 数组
无序,升序,降序.相等 大数,一维数组,逐位相加 字符串,查找 有,删除 无,添加 24 25 26 27 链表,查找,
有,计数加1;无,插入新结点. 升序排序,生成新链表. 升序排序,链表中值改变,链表结构不变. 两有序合并/ puxh(int x) pop( ) 分类. 插入,删除 求平均值,生成新链表. 28 29 30