return0;
}
答:
10
20
【】举例说明可以使用const替代#define以消除#define的不安全性。
答:
例如#include<>
#defineA2+4
#defineBA*3
voidmain()
{
cout<
}
上面程序的运行结果是14而不是18但很容易被认为是18。
用const替代#define就能得到正确结果从而消除了#define的不安全性。
#include<>
constA=2+4;
constB=A*3;
voidmain()
{
cout<
}
运行结果为18。
【】编写一个C++风格的程序,用动态分配空间的方法计算Fibonacci数列的前20项,并存储到动态分配的空间中。
#include
usingnamespacestd;
intmain()
{
inti;
int*p;
p=newint[20];
p[0]=0;
p[1]=1;
cout<<*p<<""<<*(p+1)<<"";
for(i=2;i<20;i++)
{
p[i]=p[i-2]+p[i-1];
cout<<*(p+i)<<"";
}
deletep;
return0;
}
【】编写一个C++风格的程序,建立一个被称为sroot()的函数,返回其参数的二次方根。
重载sroot()3次,让它返回整数、长整数与双精度数的二次方根(计算二次方根时,可以使用标准库函数sqrt())。
#include<>
#include<>
intsroot(intx)
{
return
(int)sqrt(x);
}
floatsroot(floatx)
{
return
(float)sqrt(x);
}
doublesroot(doublex)
{
return(double)sqrt(x);
}
voidmain()析构函数名与类名完全相同
C.析构函数不能指定返回类型
D.析构函数可以有一个或多个参数
【】构造函数是在(B)时被执行的。
A.程序编译B.创建对象
C.创建类D.程序装人内存
【】在下面有关静态成员函数的描述中,正确的是(B)。
A.在静态成员函数中可以使用this指针
B.在建立对象前,就可以为静态数据成员赋值
C.静态成员函数在类外定义时,要用static前缀
D.静态成员函数只能在类外定义
【】在下面有关友元函数的描述中,正确的说法是〔A)。
A.友元函数是独立于当前类的外部函数
B.一个友元函数不能同时定义为两个类的友元函数
C.友元函数必须在类的外部定义
D.在外部定义友元函数时,必须加关键字friend
【】友元的作用之一是(A)。
A.提高程序的运行效率B.加强类的封装性
C.实现数据的隐藏性D.增加成员函数的种类
【】以下程序运行的结果是(B)。
#include
usingnamespacestd;
classB{
public:
B(){}
B(inti,intj)
{x=i;
y=j;
}
voidprintb()
{cout<}
private:
intx,y;
};
classA{
public:
A()
{}
A(intI,intj);
voidprinta();
private:
Bc;
};
A:
:
A(inti,intj):
c(i,j)
{}
voidA:
:
printa()
{();
}
intmain()
{Aa(7,8);
();
return0;
}
A.8,9B.7,8C.5,6D.9,10
【】以下程序的运行结果是(A)。
#include
usingnamespacestd;
classA{
public:
voidset(inti,intj)
{x=i;
y=j;
}
intget_y()
{returny;
}
private:
intx,y;
};
classbox{
public:
voidset(intl,intw,ints,intp)
{length=1;
width=w;
(s,p);
}
intget_area()
{returnlength*width;
}
private:
intlength,width;
Alabel;
};
intmain()
{boxb;
(4,6,1,20);
cout<<()<return0;
}
A.24B.4C.20D.6
【】以下程序的运行结果是(B)。
#include
usingnamespacestd;
classSample{
public:
Sample(inti,intj)
{x=i;
y=j;
}
voiddisp()
{cout<<"disp1"<}
voiddisp()const
{cout<<"disp2"<}
private:
intx,y;
};
intmain()
{constSamplea(1,2);
();
return0;
}
A.disp12C.disp1disp2D.程序编译出错
【】以下程序的运行结果是(B)。
#include
usingnamespacestd;
classR{
public:
R(intr1,intr2)
{R1=r1;
R2=r2;
}
voidprint();
voidprint()const;
private:
intR1,R2;
};
voidR:
:
print()
{cout<}
voidR:
:
print()const
{cout<}
intmain()
{Ra(6,8);
constRb(56,88);
();
return0;
}
A.6,8B.56,88C.0,0D.8,6
【】写出下面程序的运行结果。
#include
usingnamespacestd;
classtoy
{public:
toy(intq,intp)
{quan=q;
price=p;
}
intget_quan()
{returnquan;
}
intget_price()
{returnprice;
}
private:
intquan,price;
};
intmain()
{toyop[3][2]={
toy(10,20),toy(30,48),
toy(50,68),toy(70,80),
toy(90,16),toy(11,120),
};
for(inti=0;i<3;i++)
{cout<cout<cout<cout<}
cout<return0;
}
10,20
30,48
50,68
70,80
90,16
11,120
【】写出下面程序的运行结果。
#include
usingnamespacestd;
classexample
{public:
example(intn)
{i=n;
cout<<"Constructing\n";
}
~example()
{cout<<"Destructing\n";
}
intget_i()
{returni;
}
private:
inti;
};
intsqr_it(exampleo)
{return()*();
}
intmain()
{examplex(10);
cout<<()<cout<return0;
}
10
100
Destructing
Destructing
【】写出下面程序的运行结果。
#include
usingnamespacestd;
classaClass
{public:
aClass()
{total++;
}
~aClass()
{total--;
}
intgettotal()
{returntotal;
}
private:
staticinttotal;
};
intaClass:
:
total=0;
intmain()
{aClasso1,o2,o3;
cout<<()<<"objectsinexistence\n";
aClass*p;
p=newaClass;
if(!
p)
{cout<<"Allocationerror\n";
return1;
}
cout<<();
cout<<"objectsinexistenceafterallocation\n";
deletep;
cout<<();
cout<<"objectsinexistenceafterdeletion\n";
return0;
}
3objectsinexistence
4objectsinexistenceafterallocation
3objectsinexistenceafterdeletion
【】写出下面程序的运行结果。
#include
usingnamespacestd;
classtest
{public:
test();
~test(){};
private:
inti;
};
test:
:
test()
{i=25;
for(intctr=0;ctr<10;ctr++)
{cout<<"Countingat"<}
}
testanObject;
intmain()
{return0;
}
Countingat0
Countingat1
Countingat2
Countingat3
Countingat4
Countingat5
Countingat6
Countingat7
Countingat8
Countingat9
【】写出下面程序的运行结果。
#include
usingnamespacestd;
classA{
inta,b;
public:
A()
{a=0;
b=0;
cout<<"Defaultconstructorcalled.\n";
}
A(inti,intj)
{a=i;
b=j;
cout<<"Constructor:
a="<}
};
intmain()
{Aa[3];
Ab[3]={A(1,2),A(3,4),A(5,6)};
return0;
}
Defaultconstructorcalled.
Defaultconstructorcalled.
Defaultconstructorcalled.
Constructor:
a=1,b=2
Constructor:
a=3,b=4
Constructor:
a=5,b=6
【】写出下面程序的运行结果。
#include
usingnamespacestd;
classTest{
private:
intval;
public:
Test()
{cout<<"default."<}
Test(intn)
{val=n;
cout<<"Con."<}
Test(constTest&t)
{val=;
cout<<"Copycon."<}
};
intmain()
{Testt1(6);
Testt2=t1;
Testt3;
t3=t1;
return0;
}
Con.
Copycon.
Default.
【】写出下面程序的运行结果。
#include
usingnamespacestd;
classN{
private:
intA;
staticintB;
public:
N(inta)
{A=a;
B+=a;
}
staticvoidf1(Nm);
};
voidN:
:
f1(Nm)
{cout<<"A="<<<cout<<"B="<
}
intN:
:
B=0;
intmain()
{NP(5),Q(9);
N:
:
f1(P);
N:
:
f1(Q);
return0;
}
A=5
B=14
A=9
B=14
【】写出下面程序的运行结果。
#include
usingnamespacestd;
classM{
intx,y;
public:
M()
{x=y=0;
}
M(inti,intj)
{x=i;
y=j;
}
voidcopy(M*m);
voidsetxy(inti,intj)
{x=i;
y=j;
}
voidprint()
{cout<}
};
voidM:
:
copy(M*m)
{x=m->x;
y=m->y;
}
voidfun(Mm1,M*m2)
{(12,15);
m2->setxy(22,25);
}
intmain()
{Mp(5,7),q;
(&p);
fun(p,&q);
();
();
return0;
}
5,7
22,25
【】写出下面程序的运行结果。
#include
usingnamespacestd;
classM{
intA;
staticintB;
public:
M(inta)
{A=a;
B+=a;
cout<<"Constructing"<}
staticvoidf1(Mm);
~M()
{cout<<"Destructing\n";
}
};
voidM:
:
f1(Mm)
{cout<<"A="<<<cout<<"B="<
}
intM:
:
B=0;
intmain()
{Mp(5),Q(10);
M:
:
f1(p);
M:
:
f1(Q);
return0;
}
Constructing
Constructing
A=5
B=15
Destructing
A=10
B=15
Destructing
Destructing
Destructing
【】指出下列程序中的错误,并说明为什么。
#include
usingnamespacestd;
classStudent{
public:
voidprintStu();
private:
charname[10];
intage;
floataver;
};
intmain()
{Studentp1,p2,p3;
=30;
.
.
.
return0;
}age为private不能付值
【】指出下列程序中的错误,并说明为什么。
#include
usingnamespacestd;
classStudent{
intsno;
intage;
voidprintStu();
voidsetSno(intd);
};
voidprintStu();
{cout<<"\nSnois"<cout<<"ageis"<}
voidsetSno(ints)
{sno=s;
}
voidsetAge(inta)
{age=a;
}
intmain()
{Studentlin;
(20021);
(20);
();
}'classStudent'不存在一个叫'setAge'的方式
【】指出下列程序中的错误,并说明为什么。
#include
usingnamespacestd;
classPoint{
public:
intx,y;
private:
Piont()
{x=1;y=2;
}
};
intmain()
{Pointcpoint;
=2;
return0;
}
构筑函数错误
【】下面是一个计算器类的定义,请完成该类成员函数的实现。
classcounter{
public:
counter(intnumber);
voidincrement();<};
intmain()
{DatetestDay;
(5);
(10);
(2003);
();
return0;