1、有以下类的说明,请指出错误的地方。
class Csample
{
int a=2;
Csample();
public:
Csample(int val);
~Csample();
}
2、下面列出了由三个文件main.cpp、MyClass.h和MyClass.cpp组成的一个程序。文件main.cpp中实现了主函数;文件MyClass.h中定义了类MyClass;文件MyClass.cpp中实现了类MyClass的成员函数。题中没有给出三个文件的完整实现。仔细阅读所给的程序,根据题意补充文件MyClass.h和文件MyClass.cpp的内容。要求:
a.将成员变量定义为私有的;
b.不要增加题中没有用到的类成员。
/***********************************************************************/
//文件main.cpp
#include <iostream.h>
#include "MyClass.h"
void main( )
{
MyClass obj(3.3);
cout << obj.GetMember() << endl;
obj.SetMember(5.6);
cout << obj.GetMember() << endl;
}
/********************************************************/
/*******************************************************/
//文件 MyClass.cpp
#include "MyClass.h"
float MyClass::GetMember()
{
return member;
}
void MyClass::SetMember(float m)
{
MyClass::member=m;
}
//在这里写出构造函数的实现函数
/***********************************************************/
//文件 MyClass.h
//类MyClass的定义
class MyClass {
//在下面写出类的定义体
};
/********************************************************/
3、下面的程序可实现的功能是:输入5个职工的编号和姓名,然后显示出来。
#include <iostream.h>
#include <iomanip.h>
#include <string.h>
class Person
{
private:
public:
void setdata(int bh, char xm[ ])
{
no= ;
strcpy(name, xm);
}
void dispdata(void)
{ cout<<setw(5)<<no<<setw(10)<<name<<endl;
}
};
void main( )
{
Person ;
Stud[0].setdata(1,“张华”);
Stud[1].setdata(5,“刘兵”);
Stud[0].setdata(3,“李强”);
Stud[0].setdata(4,“王丽”);
Stud[0].setdata(2,“郑重”);
cout << “ 编号 姓名”<< endl;
cout << “-------- --------”<< endl;
?????????????????
}
阅读下列程序,回答后面提出的问题
#include <iostream.h>
class vehicle
{
int wheels;
float weight;
public:
void message(void) { cout << “Vehicle message\n”; }
};
class car : public vehicle
{
int passenger_load;
public:
void message(void) { cout << “Car message\n”; }
};
class truck : public vehicle
{
int passenger_load;
float payload;
public:
int passengers(void) { return passenger_load; }
};
class boat : public vehicle
{
int passenger_load;
public:
int passengers(void) { return passenger_load; }
void message(void) { cout << “Boat message\n”; }
};
int main()
{
vehicle *unicycle;
unicycle = new vehicle;
unicycle ->message();
delete unicycle;
unicycle = new car;
unicycle ->message();
delete unicycle ;
unicycle = new truck;
unicycle ->message();
delete unicycle ;
unicycle = new boat;
unicycle ->message();
delete unicycle ;
return 0;
}
1、写出程序的运行结果。
2、如果将vehicle的成员函数message的定义改为:
virtual void message(void) { cout << “Vehicle message \n”; }
写出修改后的程序的运行结果。
3、在上一题修改的基础上,修改类truck的定义,使它具有和car、boat等具有相似的特征。也就是说,下面的程序片段:
unicycle = new truck;
unicycle ->message();
delete unicycle ;
将会产生以下输出:
Truck message
写出为truck增加的成员函数的定义并将其实现为一个内联函数。
分析程序运行结果
1、#include <iostream.h>
class Sample
{
int x, y;
public:
Sample( ) { x=y=1;};
Sample( int a, int b) { x=a; y=b; };
~ Sample( )
{ if(x==y)
cout<<”x=y”<<endl;
else
cout<<”x!=y”<<endl;
}
void disp( )
{ cout<<”x=”<<x<<”,y=”<<y<<endl;
}
};
void main( )
{
Sample s1(2,3), s2;
s2.disp( );
s1.disp( );
cout<<endl;
}
运行结果为:
2、#include <iostream.h>
class base
{
int x;
public:
void Setx(int i) { x=i; };
int Getx( ) { return x; };
};
class Derived: public base
{
int y;
public:
void Sety(int i) { y=i; };
int Gety( ) { return y; };
};
void main( )
{ base *p;
base b_obj;
Derived d_obj;
p=&b_obj;
p->Setx(11);
cout<<”base object x: “<<p->Getx()<<endl;
p=&d_obj;
p->Setx(55);
cout<<”Derived object x: “<<p->Getx()<<endl;
d_obj.sety(99);
cout<<”Derived object y: “<<p->Gety()<<endl;
}
运行结果为: