自考复习02328面向对象程序设计doc.docx
《自考复习02328面向对象程序设计doc.docx》由会员分享,可在线阅读,更多相关《自考复习02328面向对象程序设计doc.docx(28页珍藏版)》请在冰豆网上搜索。
自考复习02328面向对象程序设计doc
02328面向对象程序设计
血向对象程序的基本元素是对象
表达式long(intvar)也可表示为(long)intvar
要让一个类中的所有对象具有共同的数据,应使用静态数据成员
在C++中,头文件扩展名是h
下列数据类型中不属于C++语言的基本数据类型是枚举类型
设已有函数intmin(int,int),该min函数功能为返回两个参数中的较小值,若求22,59,
70三者中最小值,下列表达式不正确的是intm二min(22,59,70)
对于下面的函数原型声明:
voidtestDefautParam(inta,intb=7,charz-**);卜列函数调用中,不合法的是tes(DcfaiHParam(5,'#');
已有函数doubleFunl(int,int);下列函数中不可以定义为Funl函数的重载函数的是int
Funl(int,int)
有关析构函数的说法,不正确的是析构函数和构造函数一样可以有形参
类定义的内容允许被其对象无限制地访问的是DUblic部分
C++语言可用p.a的形式访问派生类对象p的基类成员a,其屮a是公有继承的公有成员对于友元函数,下列描述中正确的友元不是本类的成员函数
关于成员函数的重载,说法正确的是函数重载,要求函数名相同,但参数个数不同或参数个数相同但其类型不同
能实现对对象进行初始化功能的是构造函数
多继承派生类构造函数构造对象时,被最先调用的是虚基类的构造函数
面向对象程序设计有以下主要特点,即抽象、封装、继承和经
假设inta=l,b=2侧表达式(++a/b)*b-的值为2
无论是什么继承方式,派生类的成员不能访问基类私力—属性的成员。
静态成员属于卷,非静态成员属于对象。
用于输出表达式值的标准输出流对象是一coin
在函数模板的参数中,用ckiss修饰的参数称为模板参数。
函数重载吋,编译系统会根据形参的个数或形参的类型来区分。
编译时的多态性可以通过使用來实现。
设要把一个文件输出流对象thisFile与文件"d:
\myfile\code.txt”相关联,所用的C++语句是ihisFilc.open(“d:
\\myfile\\codc.lxl”)。
C++中,已知char*pl二newchar(10);则释放pl指向的内存使用语句是deleted1。
下列程序实现将用户输入的字符串逆向输出。
例如:
输入的字符串为ABCDE,则输出为
EDCBAc
#include
usingnamespacestd;
voidmain()
{
charstr[180J;
cin»str;
intk=strlen(str);
for(inti=0;ivk;i++)
cout«strlk-i-lk
下列程序实现了对复数进行加法运算,请将程序补充完整。
#include
#includeusingnamespacestd;
Classcomplex〃定义一个复数类
{
public:
intreal;
intimag;complex(intr=0,inti=0){real=r;imag=i;}
};
complexoperator+(complex&a,complex&b)
{
intr=a.real+b.real;
inti=a.imag+b-imag;returncomplex(i\i);
}
voidmain()
{complexx(1,2),y(3,4),z;z=x+y;
cout<}
下面函数模板求x”,其中n为整数。
#includeusingnamespacestd;
templatevclassT>;doublepower(Tx,intn){if(x==O)return0;
if(n==O)return1;
Tpowerx=l;
for(inti=0;iif(n<0)
return1.0/powerx;
else
returnpowerx;
在下面横线处填上适当内容,完成类B的定义。
#include
usingnamespacestd;
classA
{
public:
A(){a=O;}
A(inti){a=i;}
voidprint(){cout«a«5\”;}
private:
inta;
};
classB:
publicA
{
public:
B(inti){bl=b2=O;}
B(inti,intj,intk):
A(i){bl=j;b2=k;}〃使a的值为ivoidprint(){A:
:
print();cout«bl«'\^«b2«endl;Jprivate:
intbl,b2;
}
完成下面类中的成员函数的定义。
classtricingle
{private:
intbase,height;//三角形的底和高
public:
triangle(intbase,intheight);triangle(triangle&t);
};
triangle:
:
triangle(inta,intb)
{
base=a;height=b;
}
triangle:
:
triangle(triangle&t)
{
base=t.base;height=t.height;
}
以下程序是定义一个累加器类sumA,对其重载运算符“+”,请填空。
classsumA
{private:
intn;
public:
suinA(){n=0;}
sumA(inti){n=i;)
sumAoperator+(sumAa)〃运算符重载函数
{sumAt;
t.n=n+a.n;
iclurnl:
〃函数返回
voiddisp()
{cout«nn=,,«n«endl;
}
};
voidmain()
{sumAk1(7),k2(27),k3;k3=kl+k2;
kl.dispO;k2.disp();k3.disp();
}
写11!
下列程序的运行结果:
#inelude
usingnamespacestd:
voidswap(intx,inty)
{intt;
t=x;x=y;y=t;
}
voidmain()
{inta=80,b=100;cout«^a=,,«a«,9,b=^«b«endl;swap(a.b);
cout«na=^«a<<^,b=n«b«endl;
}
答:
结杲是:
a=80,b=100
b二100
写出下列程序的运行结果:
#include
usingnamespacestd;
classBASE
{
public:
~BASE(){cout«,,BASE,,;J
};
classDERIVED:
publicBASE
public:
〜DERIVED(){cout«"DERIVED";}
};
voidmain()
{DERIVEDobj;
}
答:
结果是:
DERIVEDBASE
写出下列程序的运行结果:
#include
usingnamespacestd;
classA
{
public:
A(){cout«,,A>,;}
〜A(){cout«^^-A^^;}
};
classB:
publicA
{A*p;
public:
B(){coul~B(){coutWB";deletep;}
};
voidmain()
{Bobj;
}
答:
结果是:
ABA・B・A・A
编写一个函数intStrNum(char*s,char水subs),其功能是:
统计子字符串subs在字符串s中出现的次数。
答:
#include
usingnamespacestd;
intStrNum(charchar*subs){
intn=0;
inthl,h2;
intpl,p2;
hl=strlen(s);
h2=strlen(subs);
pl=o;
while(plp2=0;
while(s[pl]==subs[p2]&&p2
pl++;p2++;
if(pl==hl&&p2
讦(p2==h2)n++;
else
pl=pl-p2+l;
returnn
定义一个Point类,派生出圆Circle类,并增加一函数Area()计算圆的面积。
不要求定义测试类。
#includeusingnamespacestd;classPoint
{
public:
Point(floatax,floatay)
{x=ax;y=ay;}private:
floatx;
floaty;
};
classCircle:
publicPoint
public:
Circle(floatax,floatay,floatar);floatArea()
return3J4*r*r;)
private:
floatr;
Circle:
:
Circle(floatax,floatay,floatar):
Point(ax,ay){r=ar;}
下列不属于面向对彖程序设计的特征的是完整性
已知:
intm二10;下列表示引用的方法屮正确的是int&x二m;
如果要对AB类中的整型静态变量c赋初值0,则书写语句正确的是staticintAB:
:
c二0;
设有数组定义:
chararrayWChina”;则数组array所占的空间是6个字节
可用来替换宏替换“#defincE2.718281828”的语句是ConstFloatE2.718281828;
假定要对类AB定义加号操作符重载成员函数,实现两个AB类对彖的加法,并返回相加结果,则该成员函数的声明语句为ABoperator+(AB&a)
设类ClassA中存在类成员staticdoublex,则下列初始化方式正确的是doubleClassA:
:
x=25在继承中,派生类拥有的基类个数为至少1个
运用运算符delete删除一个动态对彖时系统首先为该动态对象调用析构函数,再释放其占用的内存
基类屮的protected成员可以通过public派生,其在派牛•类屮的可见性为protected
派生类的对象可以访问的基类成员是公有继承的基类的公有成员
关于友元函数的说法正确的是使用友元函数的主要目的是提高程序执行效率,因为可直
接调用该类私有变量
一个类拥有多个构造函数,则这些构造函数间为重载关系
下列关于类的权限的描述