首先是不用运算符重载的情况,用带有0字样的文件来标识。
mytime0.h 该文件定义了类Time ,文件内容如下 :
#pragma once
#ifndef MYTIME0_H_
#define MYTIME0_H_
class Time
{
private:
int hours;
int minutes;
public:
Time();
Time(int h, int m = 0);
void AddMin(int m);
void AddHr(int h);
void Reset(int h = 0, int m = 0);
Time Sum(const Time& t) const;
void Show() const;
};
#endif // !MYTIME0_H_
mytime0.cpp 定义了类的具体实现,内容如下:
#include <iostream>
#include "mytime0.h"
Time::Time()
{
hours = minutes = 0;
}
Time::Time(int h,int m)
{
hours = h;
minutes = m;
}
void Time::AddHr(int h)
{
hours += h;
}
void Time::AddMin(int m)
{
minutes += m;
hours += minutes / 60;
minutes %= 60;
}
void Time::Reset(int h, int m)
{
hours = h;
minutes = m;
}
Time Time::Sum(const Time& t)const
{
Time sum;
sum.minutes = minutes + t.minutes;
sum.hours = hours + t.hours + sum.minutes / 60;
sum.minutes %= 60;
return sum;
}
void Time::Show()const
{
std::cout << hours << "hours," << minutes << "minutes";
}
Chapter11TimeComput_Usetime0.cpp 这个文件是main类所在的文件,它使用了我们的Time类,这里求和用的是Sum函数,还没有使用运算符重载。
// Chapter11UseClass_1OperatorOverloading.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#include "mytime0.h"
int main()
{
std::cout << "Hello World!\n";
using std::cout;
using std::endl;
Time planning;
Time coding(2,40);
Time fixing(5,55);
Time total;
cout << "planning time=";
planning.Show();
cout << endl;
cout << "coding time=";
coding.Show();
cout << endl;
cout << "fixing time=";
fixing.Show();
cout << endl;
total = coding.Sum(fixing);
cout<<"coding .Sum(fixsing)=";
total.Show();
cout << endl;
return 0;
}
// 运行程序: Ctrl + F5 或调试 >“开始执行(不调试)”菜单
// 调试程序: F5 或调试 >“开始调试”菜单
// 入门使用技巧:
// 1. 使用解决方案资源管理器窗口添加/管理文件
// 2. 使用团队资源管理器窗口连接到源代码管理
// 3. 使用输出窗口查看生成输出和其他消息
// 4. 使用错误列表窗口查看错误
// 5. 转到“项目”>“添加新项”以创建新的代码文件,或转到“项目”>“添加现有项”以将现有代码文件添加到项目
// 6. 将来,若要再次打开此项目,请转到“文件”>“打开”>“项目”并选择 .sln 文件
好了,这个例子的前半部分完成了,没有使用运算符重载,用了一个Sum函数。下一篇是使用运算符重载的例子。