一、實驗目的1.理解靜態(tài)成員(靜態(tài)數(shù)據(jù)成員、靜態(tài)成員函數(shù))的作用與使用;2.理解友元(友元函數(shù)、友元類)的作用于使用。二、實驗內(nèi)容2.1練習(一):1.理解下面的程序,并在VC++6.0下運行查看結(jié)果,回答程序后面的問題。#include <iostream.h>#include <string.h>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’;nTotalObj++;}CStudent::~CStudent(){delete[] name;nTotalObj--;}void CStudent::SetAge(int age){this->age = age;}void main(){CStudent stu1("張三",25);CStudent str2("李四",26);cout<<"CStudent::nTotalObj="<<CStudent::nTotalObj<<endl;}問題一:以上程序編譯能通過嗎,為什么?問題二:成員變量nTotalObj在程序中起什么作用,它是如何實現(xiàn)的?問題三:如果規(guī)定該程序的主函數(shù)和類CStudent中的成員變量的屬性不允許改變,應該如何改正該程序?2.理解下面的程序,并在VC++6.0下運行查看結(jié)果,回答程序后面的問題。#include <iostream.h>#include <string.h>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];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);}問題一:以上程序有兩大錯誤,試指出來,并改正之?2.2練習(二):1.某商店經(jīng)銷一種貨物。貨物成箱購進,成箱賣出,購進和賣出時以重量為單位,各箱的重量不一樣,因此,商店需要記錄下貨物庫存的總重量。試用C++模擬商店貨物購進和賣出的情況。(提示:將總重量定義為靜態(tài)成員)
- 1 回答
- 0 關注
- 4768 瀏覽
添加回答
舉報
0/150
提交
取消