[C++]实验七:类的对象成员的使用、复制构造函数的使用

/*
1. 定义一个简单的Computer类,有数据成员芯片(cpu)、内存(ram)、光驱(cdrom)等等,
有两个公有成员函数run、stop。cpu为CPU类的一个对象,ram为RAM类的一个对象,cdrom为CDROM类的一个对象,定义并实现这个类。
要求:在主程序中定义一个Computer的对象,使用debug调试功能观察程序的运行流程,特别注意观察各个对象成员的构造与析构顺序。
*/
#include "Computer.h"

void main()
{
 Computer mypc;
 mypc.run();
 mypc.stop();
}

 

/*
2. 构造单词类
建立一个由单词及其含义组成的类Word (每个单词最多存储有10 条含义),该类至少应包含如下的成员函数:
- 构造函数:默认构造函数、复制构造函数和含两个参数(单词名称和包含其解释的字符串数组)的构造函数;
- 析构函数;
- 用于词义添加和查找和输出的成员函数;
- 用于单词输入和输出的成员函数等
 并在main函数中该单词类。
*/

#include "word.h"
#include <iostream>
#include <string>
using namespace std;

void main()
{
 Word GOOD; //调用默认构造函数
 GOOD.edit("good"); //单词的修改
 GOOD.addNewMeanings("1.好的,良好的;漂亮的,优美的。"); //添加词义1
 GOOD.addNewMeanings("2.愉快的,幸福的。"); //添加词义2
 GOOD.addNewMeanings("3.善良的,有品德的;仁慈的,宽大的。"); //添加词义3
 GOOD.showWordAndMeanings(); //单词、词义输出
 Word GOOD2 (GOOD); //调用复制构造函数
 GOOD2.showWordAndMeanings(); //单词、词义输出
 Word BAD("bad","1.坏的,恶的,歹的,不好的,不道德的。"); //调用含两个参数(单词名称和包含其解释的字符串数组)的构造函数
 BAD.showWordAndMeanings(); //单词、词义输出
}

 

#include <iostream>
#include <string>
using namespace std;

class CDROM{
public:
 CDROM ( string name ) :_name(name)
 {
  cout << "构造了一个CDROM!" << endl;
 }
 
 ~CDROM ()
 {
  cout << "析构了一个CDROM!" << endl;
 }

private:
 string _name;
};

 

#include "Computer.h"

void Computer::run()
{
 cout << "计算机开始运行!" << endl;
}

void Computer::stop()
{
 cout << "计算机停止运行!" << endl;
}

 

#include <iostream>
using namespace std;

class CPU{
public:
 CPU (int f):frequency(f)
 {
  cout << "构造了一个CPU!" << endl;
 }
 ~CPU () { cout << "析构了一个CPU!" << endl; }
private:
 int frequency;
};

 

#include "cup.h"
#include "ram.h"
#include "cdrom.h"

class Computer{
public:
 Computer (): _cpu(0),_ram(0),_cdrom("VOL") {}
 void run();
 void stop();
private:
 CPU _cpu;
 RAM _ram;
 CDROM _cdrom;
};

 

#include <iostream>
using namespace std;

class RAM{
public:
 RAM ( int val ) : volume(val)
 {
  cout << "构造了一个RAM!" << endl;
 }
 
 ~RAM ()
 {
  cout << "析构了一个RAM!" << endl;
 }

private:
 int volume;
};

 

#include "word.h"
#include <iostream>
#include <vector>
using namespace std;

Word::Word (const Word &other) //复制构造函数
{
 _word = other._word;
 _meaningNum = other._meaningNum;
 for ( int i=0; i< 10; i++)
 _meaning[i] = other._meaning[i];
}

void Word::addNewMeanings (string meanings)
{
 if ( _meaningNum >= 10) cout << "达到最大词义数!";
 else
  _meaning[_meaningNum++] = meanings;
}

void Word::edit(string newWord)
{
 _word = newWord;
}

void Word::showWordAndMeanings()
{
 cout << "单词" << _word << "的意思有:" << endl;
 for ( int i=0; i< _meaningNum;i++)
  cout << "第"<<i+1<<"种: " << _meaning[i] <<endl;
 cout << "/n";
}

 

#include <iostream>
#include <string>
using namespace std;
class Word{
public:
    Word():_meaningNum(0){}; //默认构造函数
 Word (const Word &other); //复制构造函数
 Word ( string word ,string meaning ):_word(word),_meaningNum(1) {_meaning[0]=meaning;}; //含参构造函数
 ~Word(){ cout << "析构" << _word <<endl ;_meaningNum=0;}; //析构函数
 void addNewMeanings (string meanings); //添加词义
 void showWordAndMeanings(); //show词义和单词
 void edit(string newWord); //修改单词
private:
 string _word;
 int _meaningNum;
 string _meaning[10];
};

没有更多推荐了,返回首页