【C++学习笔记】Step3 重载函数与重载运算符
【摘要】
目的:掌握重载的概念,程序实现重载函数和重载运算符的功能
理解:相同函数名的函数或者同一运算符,在不同场合有不同的功能。编译器通过不同的接口,判断执行哪一种功能(重载决策)。1.实现接口;2.根据接口实现对应功能。
码云:https://gitee.com/hinzer/my-notes-of-C_plus
思维导...
目的:掌握重载的概念,程序实现重载函数和重载运算符的功能
理解:相同函数名的函数或者同一运算符,在不同场合有不同的功能。编译器通过不同的接口,判断执行哪一种功能(重载决策)。1.实现接口;2.根据接口实现对应功能。
码云:https://gitee.com/hinzer/my-notes-of-C_plus
思维导图
代码 main.cpp
-
#include "iostream"
-
-
using namespace std;
-
-
//测试函数重载
-
class Hello
-
{
-
public:
-
Hello()
-
{
-
-
}
-
-
void sayHello()
-
{//接口1
-
cout << "hello hinzer" << endl;
-
-
}
-
-
void sayHello(string name)
-
{//接口2
-
string str = "hello ";
-
str += name; //拼接字符串
-
-
cout << str << endl;
-
-
}
-
private:
-
-
};
-
-
class Point
-
{
-
public:
-
Point(int x,int y)
-
{//通过this指针 访问对象属性
-
this->x = x;
-
this->y = y;
-
-
}
-
int getX()
-
{
-
return this->x;
-
}
-
int getY()
-
{
-
return this->y;
-
}
-
void add(Point p)
-
{
-
add(p.getX(),p.getY());
-
}
-
void add(int x,int y)
-
{//将x、y分别累加到对象的x和y
-
this->x += x;
-
this->y += y;
-
}
-
void operator+=(Point p)
-
{//将Point p作为参数,实现运算符重载
-
add(p);
-
}
-
private:
-
//定义坐标
-
int x,y;
-
-
};
-
-
int main(int argc, char const *argv[])
-
{
-
-
Hello *p = new Hello();
-
p->sayHello(); //默认方法
-
-
string str = "wangjian";
-
p->sayHello(str); //实现函数重载
-
-
delete p;
-
-
Point a(10,10);
-
a += Point(13,15); //因为Point(13,13)是Point类的对象,所以对 += 进行重载 与 a.operator+=(Point p) 等价
-
-
cout << "x:" << a.getX() << endl;
-
cout << "y:" << a.getY() << endl;
-
-
return 0;
-
}
编译运行
补充·伪函数
在类A中实现'()'运算符的重载,使类像函数一样使用。
-
//测试函数重载
-
class Hello
-
{
-
public:
-
Hello()
-
{
-
-
}
-
-
void sayHello()
-
{//接口1
-
cout << "hello hinzer" << endl;
-
-
}
-
-
void sayHello(string name)
-
{//接口2
-
string str = "hello ";
-
str += name; //拼接字符串
-
-
cout << str << endl;
-
-
}
-
-
void operator()()
-
{//实现对'()'的重载
-
cout << "hello __wangjian__" << endl;
-
-
}
-
private:
-
-
};
编译运行
文章来源: blog.csdn.net,作者:hinzer,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/feit2417/article/details/92752104
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)