当前位置: 首页 > news >正文

一般通过彩推人优化绿松石什么意思

一般通过彩推人,优化绿松石什么意思,国内最先做弹幕的网站,网站上用的字体我们知道C可以对函数进行重载,让同名的函数来完成相同的基本操作。其实运算符也是可以重载的,而且有的运算符已经在使用了,就像*,既可以用于地址,又可以用于乘法。 下面是一个计算时间的类 #ifndef MYTIME_H #define…

我们知道C++可以对函数进行重载,让同名的函数来完成相同的基本操作。其实运算符也是可以重载的,而且有的运算符已经在使用了,就像*,既可以用于地址,又可以用于乘法。

下面是一个计算时间的类

#ifndef MYTIME_H
#define MYTIME_H#include <iostream>using namespace  std;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 // MYTIME_H

 

#include "mytime.h"Time::Time()
{hours = minutes = 0;
}Time::Time(int h, int m)
{hours = h;minutes = m;
}void Time::AddMin(int m)
{minutes += m;hours += minutes/60;minutes %= 60;
}void Time::AddHr(int h)
{hours += h;
}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
{cout << hours << " hours, " << minutes << " minutes.\n";
}

 

#include <iostream>
#include "mytime.h"using namespace std;int main()
{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(fixing) = ";total.Show();cout << endl;return 0;
}

输出结果

planning time = 0 hours, 0 minutes.coding time = 2 hours, 40 minutes.fixing time = 5 hours, 55 minutes.coding.Sum(fixing) = 8 hours, 35 minutes.

添加加法运算符

将Time类转换为重载的加法运算法很容易,只要将Sum()的名称改为operator +()即可。只要把运算符+放在operator的后面

#ifndef STOCK_H
#define STOCK_H
#include <string>using namespace std;class stock
{
private:string company;long shares;double share_val;double total_val;void set_tot() {total_val = shares * share_val;}public:void buy(long num, double price);void sell(long num, double price);void update(double price);void show() const;const stock& topval(const stock& s) const;stock(const string& co, long n, double pr);stock();~stock();
};#endif // STOCK_H

#include "mytime.h"Time::Time()
{hours = minutes = 0;
}Time::Time(int h, int m)
{hours = h;minutes = m;
}void Time::AddMin(int m)
{minutes += m;hours += minutes/60;minutes %= 60;
}void Time::AddHr(int h)
{hours += h;
}void Time::Reset(int h, int m)
{hours = h;minutes = m;
}//运算符+重载
Time Time::operator+(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
{cout << hours << " hours, " << minutes << " minutes.\n";
}
operator+(const Time &t) const与Sum(const Time &t) const效果完全一样,可以理解operator+()就是一个函数,也可以被调用。就像下面的语句一样。
total = coding.operator+(fixing);

但是可以进一步简化

total = coding + fixing;

 这两种方法都讲使用operator+()函数,运算符左侧的coding是调用对象,右边的fixing是参数被传递的对象。

#include <iostream>
#include "mytime.h"using namespace std;int main()
{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.operator+(fixing);total = coding + fixing;cout << "coding.Sum(fixing) = ";total.Show();cout << endl;return 0;
}

输出结果没有变化

planning time = 0 hours, 0 minutes.coding time = 2 hours, 40 minutes.fixing time = 5 hours, 55 minutes.coding.Sum(fixing) = 8 hours, 35 minutes.

 运算符重载的限制:

1、重载后的运算符必须至少有一个操作数是用户定义的类型;

2、使用运算符使不能违反运算符原来的句法规则;

3、不能创建新的运算符;

4、有些运算符不能被重载:如sizeof, ?:, ::等

5、大多数运算符都可以通过成员或者非成员函数进行重载,但=、()、[]、->只能通过成员函数进行重载。

+ 、-、 *重载的应用

#ifndef MYTIME_H
#define MYTIME_H#include <iostream>using namespace  std;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 operator+(const Time& t) const;Time operator-(const Time& t) const;Time operator*(double mult) const;void Show() const;
};#endif // MYTIME_H
#include "mytime.h"Time::Time()
{hours = minutes = 0;
}Time::Time(int h, int m)
{hours = h;minutes = m;
}void Time::AddMin(int m)
{minutes += m;hours += minutes/60;minutes %= 60;
}void Time::AddHr(int h)
{hours += h;
}void Time::Reset(int h, int m)
{hours = h;minutes = m;
}//运算符+重载
Time Time::operator+(const Time &t) const
{Time sum;sum.minutes = minutes + t.minutes;sum.hours = hours + t.hours + sum.minutes/60;sum.minutes %= 60;return sum;
}Time Time::operator-(const Time& t) const
{Time diff;int tot1, tot2;tot1 = t.minutes + 60 * t.hours;tot2 = minutes + 60 * hours;diff.minutes = (tot2 - tot1) % 60;diff.hours = (tot2 - tot1) / 60;return diff;
}Time Time::operator*(double mult) const
{Time result;long totalminutes = hours * mult *60 + minutes * mult;result.hours = totalminutes / 60;result.minutes = totalminutes % 60;return result;
}void Time::Show() const
{cout << hours << " hours, " << minutes << " minutes.\n";
}
#include <iostream>
#include "mytime.h"using namespace std;int main()
{Time weeding(4, 35);Time waxing(2, 47);Time total;Time diff;Time adjusted;cout << "weeding time =  ";weeding.Show();cout << endl;cout << "waxing time =  ";waxing.Show();cout << endl;cout << "total working time =  ";total = weeding + waxing;total.Show();cout << endl;diff = weeding - waxing;cout << "weeding time - waxing time = ";diff.Show();cout << endl;adjusted = total * 1.5;cout << "adjusted work time = ";adjusted.Show();cout << endl;return 0;
}

输出结果

weeding time =  4 hours, 35 minutes.waxing time =  2 hours, 47 minutes.total working time =  7 hours, 22 minutes.weeding time - waxing time = 1 hours, 48 minutes.adjusted work time = 11 hours, 3 minutes.

http://www.tj-hxxt.cn/news/3316.html

相关文章:

  • 福田附近公司做网站建设哪家效益快手机版谷歌浏览器入口
  • 杨浦区建设和交通委员会官方网站seo搜索优化费用
  • wordpress 知言主题肇庆seo优化
  • 公司官网网站建设想法百度怎么投广告
  • 网站开发地图板块浮动360搜索引擎地址
  • 有什么电商网站做推广赚佣金的全网网站快速排名推广软件
  • 专业的河南网站建设公司独立网站和平台网站
  • 网站愉建设深圳百度竞价托管公司
  • 河南省建设厅网站资质平移办法北京关键词优化平台
  • 淮安做微信网站汕头seo推广
  • 小城市做网站seo程序
  • 手机网站优化怎么做百度搜索竞价推广
  • 服装设计师搜索seo神器
  • 鲜花网站建设解决方案网站点击量与排名
  • c#网站开发+pdf微博热搜榜排名今日
  • 阿里云ncs 建设网站网络服务提供者不履行法律行政法规规定
  • 官方网站案例常用于网站推广的营销手段是
  • 深圳龙华建网站seo网络推广经理招聘
  • 专门帮做ppt的网站seo排名赚app
  • 美克美家网站建设免费的网页制作软件
  • 建协网官方网站seo基础培训教程
  • 建筑公司网站广告宣传语百度首页登录入口
  • 动态设计网站产品营销方案
  • 新乡网站建设方案网络营销以什么为中心
  • 深圳做响应式网站公司seo是哪个英文的缩写
  • html代码爱心合肥优化排名推广
  • 怎么做一个手机网站郑州seo推广外包
  • 徐州营销网站建设报价今日头条国际新闻
  • 做海报可以在哪些网站下载素材目前较好的crm系统
  • 网站建设和网站推广可以同一家做吗营销推广软文