8、s Y为protected承袭class X,class Z为private承袭class Y。
2.有人定义 一个教师类派生一个老师 类。他认为 “姓名〞跟 “性不〞是教师、老师 共有的属性,声明 为public,“职称〞跟 “工资 〞是教师特有的,声明 为private。在老师 类中定义 特有的属性“班级〞跟 “效果〞。因而 有
class teacher
{ public:
char name[20]; char sex;
private:
char title[20]; double salary;
};
class student : pu
9、blic teacher
{ private:
char grade[20] ; int score; };
你认为 如斯 定义 适合吗?请做出你认为 公正 的类构造定义 。
class person
{ public:
char name[20]; char sex;
};
class teacher : public person
{ private:
char title[20]; double salary;
};
class student : public person
{ private:
char grade[20] ; in
10、t score;
};
3.有类定义
class Test
{ int a,b;
public:
Test ( int m, int n ) { a=m; b=n; }
void Set( int m, int n ) { a=m; b=n; }
//……
};
有人认为 “Test跟 Set函数的功能 一样,只要 定义 其中 一个就够了〞。这种说法精确 吗?什么缘故 ?
带参数的构造函数用于树破 东西 数据初始化,成员函数用于次序 运行 时修负数据成员的值。
4.假设 有声明
template c
11、lass Tclass { /*……*/ } ;
树破 一个Tclass东西 用以下语句
Tclass Tobj;
有差错 吗?假设 出错 ,请分析缘故,并写出一个精确 的说明语句。
不 实例化类属参数。
Tclass Tobj;
5.C++的文本文件可以 用binary办法 打开 吗?假设 有以下语句
fstream of("d:testfile", ios::out|ios::binary);
double PI=3.1415;
请写出把PI的值写入文件"d:testfile"末了 的语句。
可以 。
of.seekp(0,ios::end);
12、
of.write((char*)&PI, sizeof(double));
三.阅读 以下次序 ,写出实行 后果〔每题6分,共24分〕
1.
#include //运算符重载
enum BoolConst { False=0 , True=1 }; //定义 列举 典范
class Boolean
{ public:
Boolean(BoolConst x = False) { logic = x; }
void print() const { logic? cout<<" TRUE " : cout<<" FA
13、LSE "; }
friend Boolean operator +(const Boolean & obj1, const Boolean & obj2);
friend Boolean operator *(const Boolean & obj1, const Boolean & obj2);
protected: BoolConst logic;
};
Boolean operator+ ( const Boolean & obj1, const Boolean & obj2 )
{ return (obj1.logic||obj2.logic)?Boolea
14、n(True):Boolean(False); }
Boolean operator* ( const Boolean & obj1, const Boolean & obj2 )
{ return (obj1.logic && obj2.logic) ? Boolean(True) : Boolean(False); }
void main()
{ Boolean a(False), b(True), c, d ;
c = a * b; d = a + b;
a.print(); b.print(); c.print(); d.print();
cout<15、l;
}
FLASE TRUE FALSE TRUE
2.
#include //模板,静态数据成员
template
class List
{ public:
List(T x=0) { data = x; }
void append(List *node ) { node->next=this; next=NULL; total++;}
List *getnext() { return next; }
T getdata() {return data
16、 }
static int total;
private:
T data;
List *next;
};
template int List::total=0;
void main()
{ int i, n=5;
List headnode; List *p, *last;
last = &headnode;
for( i=1; i<=n; i++ )
{ p = new List(i*2); p->append( last ); last = p; }
17、
p = headnode.getnext();
while( p )
{ cout << p->getdata() <<" "; p = p->getnext(); }
cout<::total< //类成员
#include
class Point
{ public:
Point(int x1=0, int y1=0)
18、 { x = x1; y = y1; cout<<"Point构造函数\n"; }
int GetX() { return x; }
int GetY() { return y; }
private:
int x; int y;
};
class Distance
{ public:
Distance(Point xp1, Point xp2);
double GetDis() { return dist; }
private:
Point p1;
Point p2;
19、 double dist;
};
Distance::Distance(Point xp1, Point xp2): p1(xp1), p2(xp2)
{ cout<<"Distance构造函数\n";
double x = double(p1.GetX() - p2.GetX());
double y = double(p1.GetY() - p2.GetY());
dist = sqrt(x * x + y * y);
}
void main()
{ Point myp1(0,0), myp2(0,20);
Distance mydist(myp1,m
20、yp2);
cout<<"The distance is "<
void main()
{ int a=10; double x=50.5;
char str[10], fname[20] = "d:\\data.txt";
fstream iofile(fname,ios::out);
21、 if(!iofile) return;
iofile<<"Data:\t"<>str>>a>>x;
cout<<"string="<24、); Time24(T2);
}
次序 输出:
8:30PM
20:30
10:45AM
10:45
2. //虚承袭
#include
class A
{ public:
A(const char *s){cout<25、s2):A(s1){cout<26、 A(s1),B(s1,s2),C(s1,s3)
{cout< //承袭
#include
class studentID
{ public:
studentID _____
27、8)________ //(int d=0) 构造函数的默认 参数
{ value=d; cout<28、name)-1]='\0'; cout<
class p_class
{ int num ;
public :
void set_num( i
29、nt val ){ num=val;}
void show_num( ) ;
};
void p_class :: show_num( ){ cout<show_num( ); p=ob
(11) ; p->show_num( ); p=ob+2
30、 (12) ; p->show_num( ); p=ob+1
}
次序 输出:
15 45 30
五、完成 次序 。〔第1小题4分,第2小题8分,共12分〕
1.按照次序 输出,以最小办法 补偿 A类跟 B类的成员函数。
#include < iostream.h >
class A
{ public :
//A类的成员函数
virtual ~A(){cout<<"A_object destroyed.\n";}
};
class B : public A
{ public :
//B类的成员函数
31、~B(){cout<<"B_object destroyed.\n";}
};
void main ( )
{ A * p=new B ; delete p; }
输出:
B_object destroyed.
A_object destroyed.
2.给出基类Figure定义 跟 main 函数如下:
class Figure
{ protected :
double x,y;
public:
void set(double i, double j=0) { x=i; y=j; }
virtual void s
32、howarea()const = 0 ;
};
#include
void main()
{ Triangle t; Square s;
t.set(10.48,50);
t.showarea();
s.set(888,100);
s.showarea();
}
编写派生类Triangle跟 Square的最小定义 ,以便在main 函数中调用 派生类函数showarea()的差异 完成 版本求直角三角形跟 矩形的面积。
class Triangle : public Figure
{ pub
33、lic :
void showarea()const
{ cout<< "Triangle with high "<