使用类(万物皆对象)
- 运算符重载…重点…难点
- 友元函数
- 一元运算符重载
- 重载 <<运算符…重点
- 类的自动转换和强制类型转换
给大家一个建议—哈哈哈
运算符重载就是“想法转换”, 它的目标是简化函数调用的方式
- 把标准的函数使用方式,重新定义为自己认为的方式
- 所谓重载,就是赋予新的含义
- 运算符重载也是一个道理,同一个运算符可以有不同的功能
实际上,我们已经在不知不觉中使用了运算符重载
- +号可以对不同类型(int,float等)的数据进行加法运算
- <<既是位移运算符,又可以配合cout 向控制台输出数据
- C++本身已经对这些运算符进行了重载
整数x和y可以进行算术运算。但是,两个对象呢?它们能不直接相加?
- 回答是不能直接相加
- 但是,如果运算符重载了,那么就可能让两个对象相加
Example
实现
integer.h
#pragma once
#include <iostream>
using namespace std;
//运算符重载test
class integer
{
private:
int m_num;
public:
integer();
integer(int);
const integer operator + (const integer&) const; //const integet为返回类型 重载运算符+,实现对象之间的相加
int integer_p(); //输出m_num;
~integer();
};
integer.cpp
#include "pch.h"
#include "integer.h"
integer::integer()
{
m_num = 0;
}
integer::integer(int num)
{
m_num = num;
}
const integer integer::operator + (const integer& other) const
{
cout << "重载了运算符+, 以便实现两个整型对象相加" << endl;
return integer(this->m_num + other.m_num);
}
int integer::integer_p()
{
return m_num;
}
integer::~integer()
{
}
main.cpp
//
#include "pch.h"
#include "integer.h"
int main()
{
integer num1(1024);
integer num2(24);
integer num3 = num1 + num2;
cout << num3.integer_p() << endl;
return 0;
}
结果
重载了运算符+, 以便实现两个整型对象相加
1048
const讲解
const本身是常量
只读、不能更改。
只能赋值一次
const int * ptr1 = &num1; //指针可以修改,但是指向的内容不能修改
int * const ptr2 = &num2; //指针不可以修改, 但是指向的内容可以修改
const int * const ptr3 = &num3; //都不可修改
使用const修饰引用类型的一个常见原因是:提高效率
在可以返回对象、也可以返回引用时,就应该首选引用、因为效率高
const修饰函数-说明函数不会修改成员变量的值
可以被重载的运算符包括所有c的运算符,可以重载的运算符列表如下:
不能重载的运算有5个
需求说明
如果是自我赋值,就不要做任何事情
友元函数