38、#include
int n; public:
Sample(int i){n=i;}
friend int add(Sample &s1,Sample &s2); };
int add(Sample &s1,Sample &s2) {
return s1.n+s2.n; }
void main() {
Sample s1(10),s2(20); cout<
39、#include
int x,y; public:
Sample(){x=y=0;}
Sample(int a,int b){x=a;y=b;} ~Sample() {
if(x==y)
cout<<\else
cout<<\}
void disp() {
cout<<\} };
void main() {
Sample s1(2,3); s1.disp(); }
六、分别指出下面的p各是什么。 1、int *p; 2、int *p[3]; 3、int (*p)[3]; 4、int *p( ); 5、int **p;
七、指出下列程序的错误,并说明为什么:
1、#include
class Student{ int sno; int age; void printStu(); void setSno(int d); };
void printStu() {
cout<<\\
cout<<\}
void setSno(int s) { sno=s; }
void setAge(int a) {
age=a; }
void main() {
Student lin; lin.setSno(20021); lin.setAge(20); lin.printStu(); }
2、
#include
13
int x,y; private:
Point(){x=1;y=2;} };
void main() {
Point cpoint; cpoint.x=2; }
3、#include
void main( )
{ int x=0,y=5,z=3;
while(z>0 && ++x<3) y=y-1;
cout<
}
4、#include
void main()
{
int x=10;
int &y=x;
cout<<\x++;
cout<<\y++;
cout<<\}
5、#include
void main( )
{ int i,n=0;
for(i=2;i<10;i++)
{ if(i%3!=0) continue;
n++; } cout<
6、#include
int *a;
public:
A(int x)
{
a=new int(x);
cout<<\
}
};
void main()
{
A x(3),*p;
p=new A(5);
delete p;
}
7、# include
class base
{
public:
virtual int func () { return 0; }};class derived: public base
{
public:int func() { return 100; }
14
};
void main() {
derived d; base& b = d;
cout << b.func() << endl; cout << b.base::func() << endl; }
8、#include
二、简答题
1、类的公有成员和私有成员有何区别?
2、引入类的静态成员有何意义?
3、什么是多态性?它能带来什么样的好处?
4、运算符重载能带来什么好处?
const float r=3.2; void main() {
float s1,s2,c1,c2,r1; c1=pi*r*r; s1=2*pi*r; r=2.8; c2=pi*r*r; s2=2*pi*r; cout
5、怎样理解类与对象的含义?类与对象的关系是什么?
6、为什么要在基类中定义虚函数?
7、引入友元的目的是什么?
8、什么是运算符重载?是否所有运算符都能进行重载?
9、析构函数有什么作用?
15
10、拷贝构造函数在哪几种情况下调用?
11、函数重载与函数覆盖有什么不同,它们与多态有什么关系?
12、C++继承是如何工作的?
三、编程题:
1. 编写一个函数,实现两个数的交换。
2. 编写一个函数,返回三个整数形参中的最小值。 3. 编写一个类LEI,实现打印私有变量a的值。
4、下面的函数统计子字符串substr在字符串str中出现的次数,如果substr在str中不出现,则返回值0。请完成该函数。
int str_count(char *substr, char *str) { }
5、定义个datetime类,使其对象可以显示当前系统时间和日期 。
6、设计一个汽车类Vehicle,包含数据成员车轮数和车重,由它派生出类Car和类Truck,前者包含载客数,后者包含载重量。编写程序实现。
7、设计一个点类Point,包含点的坐标x,y 两个数据成员,采用友元类的方式分别计算两点间的水平距离和垂直距离。
8、设计一个点类Point,包含横、纵两个坐标数据x,y,由它派生出圆类Circle,并添加一个半径数据r,求其面积area。
9、设计一个点类Point,包含两个坐标数据成员x,y和一个构造函数;再设计一个友元函数distance()用于求两点之间的距离。
10、编写一个函数,返回三个整数形参中的最大值。 11、编写一个函数,实现两个数的交换。
12、编写class cA的派生类class cAB,增加成员函数,用于求圆的周长 class cA { int r; public:
cA(int x){ r=x; }
double area( ) { return r*r*3.14; }
16