一、概念题
1.类和对象有什么区别和联系?
2.什么是类的实现?
3.this指针的概念是什么?
4.为什么要引入构造函数和析构函数?
5.什么时候需要自定义拷贝构造函数?若程序员没有定义拷贝构造函数,则编译器自动生成一个缺省的拷贝构造函数,它可能会产生什么问题?
6.什么是堆对象?创建和回收堆对象的方法是什么?
7.为什么需要静态数据成员?静态数据成员的定义和初始化方法是什么?
8.什么是静态成员函数?静态成员函数和非静态成员函数有什么区别?
9.结构struct和类class有什么异同?
10.比较类的三种继承方式public、protected、private之间的区别。
11.派生类构造函数和析构函数执行的次序是怎样的?
12.什么叫虚基类?有什么作用?
13.什么是多态性,在C++中是如何实现多态的?
14.什么是抽象类,其有何作用?抽象类的派生类是否一定要给出纯虚函数的实现?
15.在C++中能否声明虚构造函数,为什么?能否声明虚析构函数,有什么作用?
16.典型的Windows应用程序结构有哪些?
17.什么是消息?什么是消息映射?
18.文档类的主要作用是什么?视图类提供的主要函数有哪些?
19.简述利用ClassWizard是如何添加消息映射函数的。
20.非模式对话框和模式对话框有何区别?
二、填空题
1.拷贝构造函数使用______作为参数初始化创建中的对象。
2.在C++中,对于构造函数和析构函数来说,______是可以重载的,而______是不可以重载的。
3.B类中包含一个A类的成员a,则生成B类的对象时构造函数的调用顺序为______。
4.类的每一个成员函数(静态成员函数除外)都有一个隐含的参数,叫做______。假设类名为A,则该参数的类型为______。
5.类的静态成员分为______和______。
6.声明友元的关键字是______。
7.如果类A继承了B,则类A称为______,类B称为______。
8.派生类对基类的继承有三种方式:______、______和______。
9.如果只想保留公共基类的一个拷贝,就必须使用关键字________把这个公共基类定义为虚基类。
10.派生类的成员有两种来源,即______和______。
11.要想访问基类的private成员变量,只能通过基类提供的______进行间接访问。
12.重载运算符应仍保持其原有的操作数个数、结合性和______。
13.对于双目运算符,若重载为类的成员函数,有______个参数;若重载为友元函数,则有______个参数。
14.后缀"++"重载为类的成员函数(设类名为A)的形式为______,重载为类的友元函数(设类名为A)的形式为______。
15.设有一时间类Time,现欲用成员函数方法重载运算符+,实现一个时间与一个整数的相加运算,所得结果为一个新时间,则成员函数的声明语句为______。
16.C++语言支持的两种多态性分别是编译时的多态性和______的多态性。
17.联编有两种方式,即______和______。
18.抽象类必须至少包含一个______。
21.Windows系统中消息的主要类型有______、______和______。
22.当用户在窗口中按下鼠标左键时,Windows系统就会自动发送______消息给该窗口,如果程序要对此消息作出反应,则程序中应包含类似______函数。
23.OnDraw()函数有一个指向______类的指针参数,通过该参数可以直接向视图输出。
24.应用程序将任何东西画到设备中之前,必须明确索取一个______。
25.对话框分为______和______两种。
26.对话框的初始化工作一般在______和______中完成。
27.MFC中公用对话框有______、______、______、______和______。
28.视图派生类可以选择______类作其基类,可以实现文本编辑功能。
29.对于文档类,数据成员的初始化工作是在______函数中完成的。
30.如果修改了文档类中的数据,并要求重新显示,要用______或______发出重画消息,引起对OnDraw()的调用。
31.当执行cout语句输出endl数据项时,将使C++显示输出屏幕上的光标从当前位置移动到______的开始位置。
32.假定x和y为整型,其值分别为16和5,则a/y和double(x)/y的值分别为______ 和 ______。
33.strlen(“apple”)的值为______。
34.C++程序运行时的内在空间可以分为全局数据区,堆区,栈区和______区。
35.假定a是一个一维指针数组,则a+i所指对象的地址比a大______字节。
36.如果一个派生类只有一个唯一的基类,则这样的继承称为______。
37.假定AA是一个类,“AA * abc()const;”是该类中的一个成员函数的原型,在该函数体中______向*this或其成员赋值。
38.假定用户没有给一个名为AB的类定义构造函数,则系统为其定义的构造函数为______。
39.假定用户为类AB定义了一个构造函数“AB(int aa){a=aa;}”,该构造函数实现对数据______的初始化。
40.作为类的成员函数重载地个运算符时,参数表中只有一个参数,说明该运算符有______个操作数。
41.C++有两种联编方式,其中在程序编译时的联编叫做______联编
42.虚函数可以是另一类的______函数
43.定义虚函数需要用______关键字
44.将函数“void vf()”定义为纯虚数的格式是virtual void vf()______
45.拥有纯虚函数的类就是______,该类不能产生类的实例
46.派生类没有重载基类的纯虚函数,则此派生类也是______
47.有如下程序
#include <iostream.h>
class CSAI_A
{ 构造函数可以被重载
public:
virtual void fun(){cout<<"A";}
};
class CSAI_B:public CSAI_A
{
public:
virtual void fun(){CSAI_A::fun();cout<<"B";}
};
void main()
{ CSAI_A *p=new CSAI_B;
p->fun();
delete p;
}
执行这个程序的输出结果是()答案:______
48. 有如下程序
#include<iostream.h>
const int T=8;
void main()
{
int i,s=0;
for(i=1;i<=T;i++){
s+=i*i;
cout<<s<<' ';
}
cout<<endl;
}
运行结果:______
49. 有如下程序
int ff(int x,int y){
int z;
cout<<x<<'+'<<y<<'=';
cin>>z;
if(x+y==z) return 1;
else return 0;
}
函数功能:______
50. 有如下程序
char *f(char *s){
int n=strlen(s);
char * r=new char[n+1];
for(int i=0;i<n;i++)
if(s[i]>='a' && s[i]<='z')r[i]=s[i]-'a'+'A';
else r[i]=s[i];
r[n]='\0';
return r;
}
函数功能:______
51.C++虚函数有两种调用方式,分别是______和多态调用方式
52.当运算符重载为成员函数时,对象本身就是______,不在参数表中显示地出现。
53.若以成员函数形式,为类CSAI重载“double”运算符,则该运算符重载函数的原则是______
54.在表达式“x+=y”中,“+=”是作为非成员函数重载的运算符,若是使用显式的函数调用代替直接使用运算符“+=”,这个表达式还可以表示为______
55.将运算符“>>”重载为类CSAI的友元函数的格式是:friend instream& operator >>______
56.this指针______破坏类的封装性。
57.通过指向基类的指针调用派生类对象的函数时,采用______调用。
58.下面是对按从小到大排列的有序数组a[n]中进行二分查x的算法,若查成功返回该元素的下标,否则返回-1。
int BinnarySearch(int a[],int n,int x)
{
int low=0,high=n-1; //定义并初始化区间下界和上界变量
int mid; //定义保存中点元素下标的变量
while(low<=high){
mid=(low+high)/2;
if(x==a[mid]) ______
else if(x<a[mid])high=mid-1;
else ______
}
return -1;
}
59.请补充完整如下的类定义:
#include<string.h>
class A{
char *a;
public:
A(){a=0;} //定义无参构造函数,使A的值为空
A(char *aa){
a= ______ ; //进行动态存储分配
strcpy(a,aa); //用aa所指字符串初始化a所指向的动态存储空间
}
______ ; //定义析构函数,删除a所指向的动态存储空间
};
三、编程题
1.创建一个Employee类,该类中有字符数组表示姓名、街道地址、市、省和。
把表示构造函数、ChangeName函数、Display函数的函数原型放在类定义中,构造函数初始化每个成员,Display函数把完整的对象数据打印出来。其中的数据成员是保护的,函数是公共的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论