2017-C++期末总复习
《面向对象程序设计及C++》总复习
第1章:面向对象程序设计及C++语言概述
1、基本概念:
(1)面向对象的三个主要特性
(2)C++源程序的扩展名:.cpp;编译后的目标文件的扩展名:.obj;链接后的可执行文件的扩展名为:.exe;程序总是从main()函数开始运行。
第2章:C++语言对C语言的改进及扩展
1、基本概念:
(1)新的I/O流对象:cin、cout。注意它们默认的输入、输出格式!
(2)使用作用域运算符(::)能在局部变量作用域内访问同名全局变量。(课后练习四-3)
(3)new和delete动态分配和释放内存
(4)带默认参数值的函数
(4)内联函数(inline)的概念
(5)C++中的异常处理:try(检查异常)、throw(抛出异常)、catch(捕捉异常)。
2、知识重点:
(1) const修饰符与指针
区别下列定义:
const char * name=”chen” //指向常量的指针
char * const name=”chen” //常指针
const char * const name=”chen” //指向常量的常指针
(课后练习 一-5)
(2) 函数重载
特征:函数名相同,函数参数类型或个数(参数列表)不同。与函数返回类型无关。
练习:下列重载函数定义错误的是 。
A. int print( int x); B. int disp(Myclass A);
void print(float x); char * disp(Myclass A);
C. int show( int x); D. int view(int x , int y);
int show( char *s); int view( int x);
(3) 引用(变量的别名)
重点:引用的定义
引用、指针作为函数参数。
练习:
#include <iostream.h>
void s(int *a, int &b)
{ int *t=a;
*a=b;
b=*t;
}
void main()
{ int x=500, y=1000;
s(&x, y);
cout<<x<<” “<<y<<endl; }
该程序运行输出是: 。
(课后练习四-6)
第3章:类与对象
1、基本概念:
(1) 类成员的访问属性有几种。
(2) 构造函数、析构函数的定义和特点。
(3) this指针指向当前对象。
(4) 对象作为函数参数的三种形式:传值(对象变量)、传地址(对象指针)、传名(引用)。
2、知识重点:
(1) 构造函数与拷贝构造函数的使用
系统默认构造函数(无参数)
拷贝构造函数(参数通常为对象的常引用)
练习1:以下语句调用哪种构造函数:
class A; A a; //调用不带参数的构造函数
class A; A *p=new A; //调用不带参数的构造函数
class A; A a, b=a; //a调用不带参数的构造函数
//b调用拷贝构造函数
class A; A a, b(a); //同上
class A; A a,b; b=a; //?
class A; void fun(A x); A a; fun(a);
//对象作为函数参数或返回值时会调用拷贝构造函数
(2) 类的定义与使用
(例3.11、 教材例3.13、课后练习四-1,5)
(3) 对象数组与指针的使用 (教材例3.15)
(4) 友元(友元函数、友元成员、友元类)
第4章:类中数据的共享与保护
知识重点:
(1) 静态static数据成员
属于类的范畴,为同类对象所共享。
(课后练习三-1,2)
第5章:类与类之间的关系
内容1:类的组合
(1) 类对象作为成员(构造函数调用次序)
内容2:类的继承与派生
1、基本概念:
(1) 基类成员在派生类中的访问属性
基类的private成员不能被继承
(2) 赋值兼容规则
基类对象=派生类对象;
基类对象指针=派生类对象地址;
基类对象引用=派生类对象;//初始化
基类对象指针=派生类对象指针;
(3) 继承的理解(单一继承、多重继承、虚基类等)
2、知识重点:
(1) 派生类的定义
(2) 构造函数(析构函数)的执行次序
单一继承、多重继承、带虚基类的多重继承
虚基类->非虚基类->对象成员->派生类自身
(教材例5.8,课后练习四-1 ,2)
(3) 继承中的同名问题
单继承中的同名问题(同名覆盖)
使用成员名限定法:基类名::
多重继承中的同名问题(二义性)
使用成员名限定法:类名::
使用虚基类:virtual
(实验二-1)
练习1:
#include <iostream.h>
class A
{ public:
int x;
A(int i) { x=i;}
void Show() { cout<<”A: x=”<<x<<endl; }
};
class B
{ public:
int y;
B(int i) { y=i; }
void Show() { cout<<”B: y=”<<y<<endl; }
};
class C: public A, public B
{ public:
int y;
C(int a, int b, int c):A(a+1), B(b-1) { y=c; }
void Show() { cout<<”C: y=”<<y<<endl; }
};
void main()
{ C c1(400, 500, 600); c1.y=200;
c1.Show();
c1.A::Show(); c1.B::Show();
}
该程序运行输出是:
第6章:多态性
1、基本概念:
(1) 两种多态性
静态多态性,编译时多态性:函数(运算符)重载。
动态多态性,运行时多态性:继承、虚函数、基类指针。
(2) 运算符重载
不能重载的运算符:. 、 .* 、:: 、 sizeof 、 ?: 。
(3) 虚函数、纯虚函数和抽象类
2、知识要点:
(1) 运算符重载(成员函数、友员函数)
例如:class X;
X operator + ( X a ); //成员函数,双目运算+、-、*、/
friend X operator + ( X a, X b); //友员函数,双目运算
X operator - ( ); //成员函数,单目运算 -
friend X operator - ( X a); //友员函数,单目运算
X operator ++ ( ) //成员函数,前缀++、--
friend X operator ++ ( X& a); //友员函数,前缀++、--
X operator ++ ( int ) //成员函数,后缀++、--
friend X operator ++ ( X& a, int); //友员函数,后缀++、--
friend ostream& operator << ( ostream & out, const X &obj);
//友员函数, 输出运算符>>
friend istream& operator >> ( istream & in, X &obj);
//友员函数, 输入运算符>>
(教材例6.8、实验三)
(2) 虚函数的特点、虚函数的应用、抽象类
(教材例6.13,课后习题四-2,实验三)
第7章:模板
1、知识要点:
(1) 函数模板的定义和使用
(教材例7.2 课后练习一-1,2,3)
(2) 类模板的定义和使用
第8章:C++的I/O流类库
1、知识要点:
(1)>>、<<运算符的重载
(教材例8.7)
(2)用get()、put()进行文件输入、输出
(教材例8.8,实验四-2)