C++面向对象程序设计实验指导书 实验四
实验四 类和对象—对象传递与静态成员
4.1 实验目的
1.理解静态成员(静态数据成员、静态成员函数)的作用与使用; 2.理解友元(友元函数、友元类)的作用于使用; 3.理解常类型的使用。
4.2 实验内容 4.2.1程序阅读
1.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。
#include
class CStudent {
public:
CStudent(char *n, int a); ~CStudent();
static void SetAge(int age);
private:
char *name; int age;
static int nTotalObj; };
int CStudent::nTotalObj = 0;
CStudent::CStudent(char *n, int a) :age(a) {
int nLen = strlen(n);
name = new char[nLen+1]; strcpy(name,n); name[nLen] = '\\0';
12
C++面向对象程序设计实验指导书 实验四
nTotalObj++; }
CStudent::~CStudent() {
delete[] name;
nTotalObj--; }
void CStudent::SetAge(int age) {
this->age = age; }
void main() {
CStudent stu1(\张三\,25); CStudent str2(\李四\,26);
cout<<\< 问题一:以上程序编译能通过吗,为什么? 问题二:成员变量nTotalObj在程序中起什么作用,它是如何实现的? 问题三:如果规定该程序的主函数和类CStudent中的成员变量的属性不允许改变,应该如何改正该程序? 2.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。 #include class CStudent { public: CStudent(char *n, int a); ~CStudent(); private: char *name; int age; }; CStudent::CStudent(char *n, int a) :age(a) { int nLen = strlen(n); name = new char[nLen+1]; 13 C++面向对象程序设计实验指导书 实验四 strcpy(name,n); name[nLen] = '\\0'; } CStudent::~CStudent() { delete[] name; } class CTeacher { public: CTeacher(char *tn, int ta); ~CTeacher(); void SetStuAge(int a); private: char *name; int age; CStudent stu; }; CTeacher::CTeacher(char *tn, int ta) :age(ta) { int nLen = strlen(tn); name = new char[nLen+1]; strcpy(name,tn); name[nLen] = '\\0'; } CTeacher::~CTeacher() { delete[] name; } void CTeacher::SetStuAge(int a) { stu.age = a; } void main() { CStudent stu(\张三\,25); CTeacher tea(\李四\,26); 14 C++面向对象程序设计实验指导书 实验四 } 问题一:以上程序有两大错误,试指出来,并改正之? 3.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。 #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(); } 问题一:以上程序有两大错误,试指出来,并改正之(要求主函数和类Date的数据成员属性不可以改动)? 4.2.2 程序设计 1.某商店经销一种货物。货物成箱购进,成箱卖出,购进和卖出时以重量为单位,各箱的重量不一样,因此,商店需要记录下目录库存的总重量。试用C++模拟商店货物购进和卖出的情况。 15 C++面向对象程序设计实验指导书 实验五 实验五 派生与继承—单重派生 5.1 实验目的 1.理解继承的含义以及声明; 2.理解共有派生、私有派生和保护派生的含义以及使用; 3.理解单派生类中构造函数和析构函数的调用顺序。 5.2 实验内容 5.2.1程序阅读 1.理解下面的程序,并在VC++6.0下运行查看结果,回答程序后面的问题。 #include \ class CBase { public: CBase(int a) :a(a) { } protected: void print() { cout<<\< class CDerive : public CBase { public: void print() { CBase::print(); cout<<\< 16 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库C++面向对象程序设计实验指导书(4)在线全文阅读。
相关推荐: