C++(面向对象的程序设计)考前必背的名词解释和简答题
1. 封装 封装是将数据和代码捆绑到一起,避免了外界的干扰和不确定性。例如 C++中的 类,它定义了该集合中每个对象所共有的属性和方法。
2. 继承 继承是让某个类型的对象获得另一个类型的对象的特征。例如:C++中子类对父 类的继承,子类具有父类的特性,同时还可以拥有自己的新特性。
3. 多态 多态是指不同类型的对象接收相同的消息时产生不同的行为。 多态机制使具有不 同内部结构的对象可以共享相同的外部接口,通过这种方式减小代码的复杂度。 例如函数的重载。 4. 什么是 this 指针?为什么要用 this 指针?
this 指针是类中的一个特殊指针,当类实例化时,this 指针指向对象自己;而 在类的声明时,指向类本身。通过它不仅可以提升成员函数操作的效率,而且能 简化运算符重载代码。
5. 叙述公有、私有、保护成员在类中、类外和对象中的访问权限。 类中的关键字 public, private, protected 声明了类中的成员与类外之间的关 系,称为访问权限 。 对于 public 成员来说,他们是公有的,可以在类外和对象中访问。 对于 private 成员来说,他们是私有的,不能在类外和对象中访问,数据成员只 能由类中的函数使用,成员函数只允许在类中调用。 对于 protected 成员来说,他们是受保护的,具有半公开性质,可以在类中与子 类中访问。 6. 构造函数和析构函数的作用是什么?
构造函数的功能是在创建对象时,给数据成员赋初值,即给对象初始化。 析构函数的功能是释放一个对象,在对象删除前,用来做一些内存释放等清理工 作。 7. 什么是类的继承和派生?
继承是指一个事物可以继承其父辈全部或部分的特性, 同时本身还有自己的特性。 当一个新类从一个已定义的类中派生后,新类不仅继承了原有类的属性和方法, 并且还拥有自己新的属性和方法,称为类的继承和派生。 8. 派生类 public 继承方式有那些特点?
(1) 在派生类中, 基类的公有成员、 保护成员和私有成员的访问属性保持不变。 在派生类中,基类的私有成员是无法访问的,虽然基类的私有成员被派生类继承了。
(2)派生类对象只能访问派生类和基类的公有成员。 9. 派生类 protected 继承方式有那些特点?
(1)在派生类中,基类的公有成员、保护成员的访问属性都变成了保护的。
(2)在保护继承方式下,派生类中仍可以访问基类的公有成员和保护成员,但 基类的私有成员是无法访问的。 (3)派生类对象只能访问派生类的公有成员,不能访问基类的任何成员。 10. 派生类 private 继承方式有那些特点?
(1)在派生类中,基类的公有成员、保护成员和私有成员的访问属性都将变成 私有的。
(2)私有继承方式下,派生类中仍可以访问基类的公有成员和保护成员,但基 类的私有成员是无法访问的。 (3)派生类对象只能访问派生类的公有成员,不能访问基类的任何成员。 11. 在定义派生类的过程中,如何对基类的数据成员进行初始化?
通过调用基类的构造函数来设定基类的数据成员的初值。 格式为 <派生类名>(形参表) :基类 1(参数表) ,基类 2(参数表)…对象成员 1(参数表) ,对象成员 2(参数表)…{} 12. 什么是虚基类?它的作用是什么?
虚基类是指在派生类中指定的基类是虚继承的方式。 使用虚基类的目的是在多重派生中使用共有基类时, 在派生类中只有一个拷贝从 而解决有多个基类拷贝所产生的二义性问题。
13. 在函数调用过程中,什么是赋值传递,什么是引用传递?
赋值传递是将实参赋值给形参变量, 然后执行被调函数体。 赋值传递有两种形式, 一是直接传常量或变量值,二是传变量的地址。 引用传递是将形参引用给形参,需要形参与实参指的是同一变量。
14. #include
(2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被 const 修饰 的东西都受到强制保护,可以预防意外的变动,能提
1
高程序的健壮性。
16. 类的指针成员为什么要用 new 另辟内存空间?
为了保证类的封装性, 类中的指针成员所指向的内存空间必须在类的定义中自行独立开辟和释放。
语法扩充
1.1选择题
在C++中用( D )能够实现将参数值带回。 a)数组 b)指针 c)引用 d)上述ABC都可
考虑函数原型void test(int a,int b=7,char *ch=\下面的函数调用中,属于不合法调用的是:(A)test(5) B)test(5,8) C)test(6,\ D)test(0,0,\; 已知: int m=10;下列表示引用的方法中,正确的是:( C ) A)int &Z; B)int &t=10; C)int &X=m; D)float &f=&m; 下列不是函数重载所要求的条件是:( D ) A)函数名相同 B)参数个数不同 C)参数类型不同 D)函数返回值类型不同 在C++中执行以下4条语句后输出rad值为:( C ) static int hot=200; int &rad=hot; hot=hot+100; cout< A) 0 B) 100 C) 300 D) 200 系统在调用重载函数时,不能作为确定哪个重载函数被调用的依据是:( D ) A)参数个数 B)参数类型 C)函数名称 D)函数的返回值类型 对C++语言和C语言的兼容性,描述正确的是:( A ) A)C++兼容C B)C++部分兼容C C)C++不兼容C D)C兼容C++ 在C++中使用流进行输入输出,其中用于屏幕输出的对象是:( C ) A)cerr B)cin C)cout D)cfile 对使用关键字new所开辟的动态存储空间,释放时必须使用( C ) A)free B)create C)delete D)realse 在函数调用时,如某一默认参数要指明一个特定值,则有( A ) A)其之前所有参数都必须赋值 B)其之后所有参数都必须赋值 C)其前、后所有参数都必须赋值 D)其前、后所有参数都不必赋值 下列哪个类型函数不适合声明为内联函数( A ) A)函数体语句较多 B)函数体语句较少 C)函数执行时间较短 D)函数执行时间过长 int Func(int,int);不可与下列哪个函数构成重载( B ) A)int Func(int,int,int); B)double Func(int,int); C)double Func(double,double); D)double Func(int,double); 下面的哪个保留字不能作为函数的返回类型( C ) A)void B)int C)new D)long 一个函数功能不太复杂,但要求被频繁调用,选用( A )。 A. 内联函数 B. 重载函数 C. 递归函数 D. 嵌套函数 已知函数f的原型为:void f (int&a,char*b);变量s,t的定义是:int s;char t[ ]=\; 2 C ) 把s和t分别作为第一参数和第二参数来调用函数f,正确的调用语句是( C ) A f(&s,&t); B f(&s,t); C f(s,t); D f(s,&t); 若定义cin>>str; 当输入 Microsoft Visual Studio 6.0! 所得结果是str=(B)。 A、 Microsoft Visual Studio 6.0! B、 Microsoft C、 Microsoft Visual D、 Microsoft Visual Studio 6.0 .函数模板(C)。 A、代表某一具体函数 B、与模板函数是同一个函数 C、与某一个具体的数据类型连用 D、是模板函数实例化的结果 在C++中,关于下列设置参数默认值的描述中,正确的是(C) A、不允许设置参数的默认值 B、设置参数默认值只能在定义函数时设置 C、设置参数默认值时,应该是先设置右边的再设置左边的 D、设置参数默认值时,应该全部参数都设置 下列表示引用的方法中,(A)是正确的。 已知: k=1000; A、int &x=k; B、char &y; C、int &z=1000; D、float &t=&k; 有如下模板定义: template A)fun(2,8) B)fun(2.0,8.2) C)fun(2.3,8) D)fun (‘2’,’8’) 通常情况下,函数模板中的类型参数个数不能是( A ) A)0个 B)1个 C)2个 D)3个 1.2填空题 1、 假定有如下定义:int x;,若要将整型变量y定义为变量x的引用,则应使用的定义语句是_int &y=x;________。 具有相同函数名但具有不同参数表的函数称为 重载函数。' 2、 在进行函数调用时,将把参数的值传递给值参数,把参数的_地址_传递给引用参数。 3、 执行完下列三条语句后,指针变量c指向__b___。 Int a,b,*c=&a; int *&p=c; p=&b; 4、 假设有如下函数定义:void Fun(int x,int y=100);则语旬Fun(5)语句__ Fun(5,100)_等价。 5、 在一个C++程序中,每个变量都必须遵循__先定义后使用__的原则。 6、 下面是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。 函数TotalSum 计算数组元素之和。请完成下列程序。 #include 3