面向对象程序设计实验报告 下载本文

CTeacher::~CTeacher() { delete[]name; }

void CTeacher::SetStuAge(int a) { stu.age=a; }

void main() { CStudent stu1(\张三\ CStudent str2(\李四\}

问题一:以上程序有两个错误,指出并改正。

答:第一处错误是Cstudent age为私有,Cteacher无法访问。

第二处错误是Cteacher中Cstudent未初始化。

改正:①public:int age②Cteacher::Cteacher(char*tn,int ta)::age(ta),stu(tn,ta) 3. 理解下面的程序并运行,然后回答后面的问题。 #include class Date {

private: const int year; const int month; const int day; public: Date(int y,int m,int d); void showdate(); };

Date::Date(int y,int m,int d) { year=y; month=m; day=d; }

void Date::showdate() {

cout<

void main() { const Date obj(2007,10,30); obj.showdate(); }

问题一:以上程序有两个错误,试指出来,并改正之?

答:第一处错误是:构造函数应该用成员初始化列表对常数据成员初始化;第二处错误是:没有用常成员函数访问常对象数据成员。改正后的程序为: #include using namespace std; class Date {

private: const int year; const int month; const int day; public: Date(int y,int m,int d); void showdate()const ; };

Date::Date(int y,int m,int d):year(y),month(m),day(d) {

}

void Date::showdate()const { cout<

void main() {

Date obj(2007,10,30); obj.showdate(); }

实验五 派生与继承—单基派生

5.1 实验目的

1. 理解继承的概念;

2.理解共有派生、私有派生和保护派生;

3. 理解单基派生类中构造函数和析构函数的执行顺序。 5.2 实验内容 5.2.1 程序阅读

1. 理解下面的程序并运行,然后回答后面的问题。

#include class CBase {

public: CBase(int a) :a(a) { } protected: void print() { cout<<\ } private: int a; };

class CDerive:public CBase {

public: void print() { CBase::print(); cout<<\ } private: int b; }

void main() { CDerive d;

d.print(); CBase b; b.print(); }

问题一:以上程序有两个错误,试指出来,并改正之。

答:类CBase中的成员数据应该为公有访问属性,第二个错误是构造函数有问题。改正后的程序有两种: ①

#include using namespace std; class CBase { public: CBase(int a):a(a) { }

Void print() { cout<<\ } public: int a; };

class CDerive:public CBase {

public: CDerive(int a,int b):CBase(a),b(b) { } void print() { CBase::print(); cout<<\}

private: int b; };