试卷 :
接:https://pan.baidu.com/s/1gFpA9zgw_RDuxzpNkHLa4g
提取码:c3nj
一、简述题
-
Q:简述面向对象程序设计方法的主要特征
A:抽象、封装、继承、多态、
-
Q:什么叫内联函数?它有哪些特点?
A:内联函数简单来说就是由关键字`inline`修饰的函数。 内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。 如此,节省了参数传递、控制转移等开销。
-
Q:构造函数的主要作用是什么?它有什么特性?
A:构造函数的作用就是在对象被创建时利用特定的值构造对象,将对象化为一个特定的状态 不同于其他函数,构造函数有如下特性: 1)构造函数的函数名与类名相同,而且没有返回值。 2)构造函数通常被声明为公有函数 3)构造函数在对象被创建时自动调用
-
Q:什么是函数重载?调用时系统通过什么来区分?
A:两个以上的函数,具有相同的函数名,但是其参数的个数或者类型不同。 调用时,系统根据实参和形参的个数和类型的最佳匹配来区分该调用哪一个函数。
-
Q:派生类继承基类的方式有几种?分别是什么
A:3种 公有继承,保护继承,私有继承
-
Q:为什么使用模板?定义类模板的一般格式是什么?
A:为什么使用模板?实现代码的高度复用,减少不必要的重复劳动,从而实现泛型编程的目标。 一般格式: template<typename T> class className{ [members]; }
二、改错题[每题只有一个错误]
-
#include <iostream> using namespace std; #include <math.h> class complex{ private: double real; double imag; public: complex(double r,double i){ real = r; imag = i; } double realcomplex() { return real; } double imagecomplex() { return imag; } double abscomplex() { double t; t = real*real + imag*imag; return sqrt(t); } }; int main(){ complex a(1.0,1.0); /*cout<<a.real<<endl错误*/ /* * real是complex的一个私有成员, * 外部无法访问。 * 要取得real的值,就必须调用complex类的 * 外部接口(公有成员函数)realcomplex(), * 故应该改为cout<<a.realcomplex()<<endl; */ cout<<a.realcomplex()<<endl; }
-
#include <iostream> using namespace std; class Point{ public: int m,n; /*private: Point(){ m=0; n=1;}错误*/ /*构造函数通常声明为公有函数 * 应改为 * public: * Point(){ m=0; n=1; } * */ private: Point(){ m=0; n=1;} }; int main(){ Point op; op.m = 123; }
-
#include <iostream> using namespace std; class Sample{ private: int n,m; public: Sample() { m=0; n=0; } Sample(