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

驾校一点通网站怎么做bt兔子磁力搜索

驾校一点通网站怎么做,bt兔子磁力搜索,泉州哪里做网站开发,建设会计协会网站1、运算符重载的概念 运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。运算符重载的目的是让语法更加简洁运算符重载不能改变本来寓意,不能改变基础类型寓意运算符重载的本质是另一种函数调用…

1、运算符重载的概念

  1. 运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。
  2. 运算符重载的目的是让语法更加简洁
  3. 运算符重载不能改变本来寓意,不能改变基础类型寓意
  4. 运算符重载的本质是另一种函数调用(是编译器去调用)
  5. 这个函数统一的名字叫operator
  6. 重载函数可以写成全局或成员函数
  7. 重载函数如果写成全局的,那么双目运算符左边的是第一个参数,右边是第二个参数
  8. 重载函数如果写成成员函数,那么双目运算符的左边是this,右边是第一个参数
  9. 不能改变运算符优先级,不能改变运算符的参数个数。

2、加号运算符重载

1、同类型的对象相加

#include <iostream>
using namespace std;class Maker
{
public:Maker(int id, int age){this->id = id;this->age = age;}//写成成员函数,那么只需要一个参数,这个参数是加号的右边Maker operator+(Maker& m2){Maker temp(this->id + m2.id, this->age + m2.age);return temp;}
public:int id;int age;
};
//重载加号运算符  全局函数方式
//Maker operator+(Maker &p1,Maker &p2)
//{
//	Maker temp(p1.id + p2.id, p1.age + p2.age);
//	return temp;
//}
void test()
{Maker m1(1, 10);Maker m2(2, 20);Maker m3 = m1 + m2;cout << m3.id << endl;cout << m3.age << endl;
}
int main()
{test();return 0;
}

2、不同对象类型相加

#include <iostream>
using namespace std;class Maker
{
public:Maker(int id, int age){this->id = id;this->age = age;}//写成成员函数,那么只需要一个参数,这个参数是加号的右边Maker operator+(Maker& m2){Maker temp(this->id + m2.id, this->age + m2.age);return temp;}
public:int id;int age;
};class Student
{
public:Student() {mid = 0;}Student(int id) {mid = id;}
public:int mid;
};Maker operator+(Maker& m1, Student& s1)
{Maker temp(m1.id + s1.mid, 20);return temp;
}
Student operator+(Student& s1, Maker& m1)
{Student temp(s1.mid + m1.id);return temp;
}
void test()
{Maker m1(1, 10);Student s1(2);Maker m3 = m1 + s1;cout << m3.id << endl;Student s2 = s1 + m1;cout << s2.mid<<endl;
}
int main()
{test();return 0;
}

3、减号运算符重载

#include <iostream>
using namespace std;class Maker
{
public:Maker(int id, int age){this->id = id;this->age = age;}//写成成员函数,那么只需要一个参数,这个参数是加号的右边Maker operator-(Maker& m2){Maker temp(this->id - m2.id, this->age - m2.age);return temp;}
public:int id;int age;
};
void test()
{Maker m1(10, 18);Maker m2(5, 15);Maker m3 = m1 - m2;cout << m3.id << endl;cout << m3.age << endl;
}
int main()
{test();return 0;
}

4、左移运算符重载

#include <iostream>
#include <iostream>
using namespace std;class Maker
{
public:Maker(int id, string name){this->id = id;this->name = name;}
public:int id;string name;
};
//1、形参和实参是一个对象
//2、不能改变库类中的代码
//3、ostream中把拷贝构造函数私有化了
//4、如果要和endl一起使用,那么必须返回ostream的对象
ostream& operator<<(ostream& out, Maker& m1)
{cout << m1.id << " " << m1.name << endl;return out;
}
void test()
{Maker m1(10, "薯片");cout << m1 << endl;
}
int main()
{test();return 0;
}

5、右移运算符

#include <iostream>
#include <iostream>
using namespace std;class Maker
{
public:Maker(int id, string name){this->id = id;this->name = name;}int getAge() {return this->id;}
public:int id;string name;
};istream &operator>>(istream& in, Maker& m1)
{cin >> m1.id;cin >> m1.name;return in;
}
void test()
{Maker m(10, "薯片");cin >> m;cout << m.getAge() << endl;
}
int main()
{test();return 0;
}

6、关系运算符重载

#include <iostream>
#include <iostream>
using namespace std;class Maker
{
public:Maker() {};Maker(int id){this->id = id;}bool operator==(Maker &m) {if (this->id == m.id) {return true;}return false;}bool operator!=(Maker& m) {if (this->id != m.id) {return true;}return false;}
public:int id;
};void test()
{Maker m1(10);Maker m;if (m1 == m) {cout << "真" << endl;}else {cout << "假" << endl;}if (m1 != m) {cout << "真" << endl;}else {cout << "假" << endl;}}
int main()
{test();return 0;
}

7、前置加加和后置加加

#include <iostream>
#include <iostream>
using namespace std;class Maker
{friend ostream& operator<<(ostream& os, Maker& m);
public:Maker(int id){this->id = id;}//重置前置加加Maker& operator++(){++this->id;return *this;}//重置后置加加Maker operator++(int)//占位参数,必须是int{Maker tmp(*this);//tmp是局部变量,局部变量不能以引用返回++this->id;return tmp;}
private:int id;
};ostream& operator<<(ostream& out, Maker& m) {cout << m.id << endl;return out;
}void test()
{Maker m1(10);cout << ++m1;cout << m1++;}
int main()
{test();return 0;
}

8、智能指针类

8.1、智能指针类是管理另一个类的对象的释放

#include <iostream>
#include <iostream>
using namespace std;class Maker
{
public:Maker() {cout << "Maker的无参构造" << endl;}~Maker() {cout << "Maker的析构函数" << endl;}};//智能指针类
class SmartPoint
{
public:SmartPoint(Maker* p){this->pMaker = p;}~SmartPoint(){cout << "SmartPoint的析构函数" << endl;if (this->pMaker != NULL){delete this->pMaker;this->pMaker == NULL;}}
private:Maker* pMaker;
};
void test()
{Maker* p = new Maker;//在堆区开辟的数据,需要手动delete掉SmartPoint sm(p);//栈区  会调用析构函数//当test()函数结束时,会调用smartPoint的析构函数。//在这析构函数中delete了Marker的对象,会调用Maker的析构函数
}
int main()
{test();return 0;
}

在这里插入图片描述

8.2、指针运算符重载

#include <iostream>
#include <iostream>
using namespace std;class Maker
{
public:Maker() {cout << "Maker的无参构造" << endl;}void printMaker(){cout << "Hello Maker" << endl;}~Maker() {cout << "Maker的析构函数" << endl;}};//智能指针类
class SmartPoint
{
public:SmartPoint(Maker* p){this->pMaker = p;}//重载指针运算符Maker* operator->(){return this->pMaker;}~SmartPoint(){cout << "SmartPoint的析构函数" << endl;if (this->pMaker != NULL){delete this->pMaker;this->pMaker == NULL;}}
private:Maker* pMaker;
};
void test()
{Maker* p = new Maker;SmartPoint sm(p);sm->printMaker();
}
int main()
{test();return 0;
}

在这里插入图片描述

8.3、重载星号

	//重载星号Maker& operator*(){return *pMaker;}void test()
{Maker* p = new Maker;SmartPoint sm(p);(*sm).printMaker();
}

9、重载函数调用符号

9.1、类里有重载函数调用符号的类实例化的对象也叫仿函数

#include <iostream>
#include <iostream>
using namespace std;//一个类如果重载了函数调用符号,那么这个类实例化出的对象也叫仿函数
//仿函数的作用:1、方便代码维护
class Maker
{
public:Maker(string name) {this->m_Name = name;};void printMaker(){cout << "hello " <<this->m_Name<< endl;}//重载()void operator()(){cout << "hello" << endl;}
public:string m_Name;
};void test()
{Maker func("薯片");func();//看着像函数,但func是对象}
int main()
{test();return 0;
}
http://www.hkea.cn/news/933013/

相关文章:

  • 织梦统计网站访问量代码网络营销公司如何建立
  • 外贸营销型网站建设今日最新重大新闻
  • 个性化定制网站长春网络推广优化
  • 合肥庐阳区疫情最新消息seo优化首页
  • h5网站制作接单最新中高风险地区名单
  • 北京市住房城乡建设委网站公司怎么在网上推广
  • 网站建设首页怎样插入视频百度指数在线查询小程序
  • 青州网站制作哪家好aso优化哪家好
  • wordpress做网站优点郑州网站seo优化
  • 宝安做棋牌网站建设找哪家公司好湖南长沙疫情最新消息
  • 四川专业网站建设中国十大企业培训机构排名
  • 怎么切页面做网站灰色词首页排名接单
  • 网站右侧浮动广告代码百度推广代理公司广州
  • 固原建站公司旺道seo推广系统怎么收费
  • 适合做外链的网站海外广告联盟平台推广
  • 建筑模板规格型号郑州厉害的seo顾问
  • ppt做书模板下载网站有哪些内容国际婚恋网站排名
  • 上海网站建设内容更新网络营销策划目的
  • 重庆市建设信息网站关键词查询网
  • 做哪种网站流量大怎么打广告宣传自己的产品
  • 免费表白网站制作seo网络优化推广
  • 网站建设中可能升级中国科技新闻网
  • 网站制作内容文案网站如何快速被百度收录
  • 淘宝淘宝网页版登录入口免费seo公司
  • 竹溪县县建设局网站短视频营销
  • 好的网站有哪些搜索引擎seo是什么意思
  • 做音乐网站赚钱吗做小程序的公司
  • 坪地网站建设域名流量查询工具
  • 网站建设部署万能推广app
  • 网站的重要性怎么做个网站