C++核心编程 14(二)左移运算符重载
2022/1/30 14:34:17
本文主要是介绍C++核心编程 14(二)左移运算符重载,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
对于内置数据类型,编译器知道如果cout进行<<运算符输出,对于自定义数据类型,无法输出。于是便想到重载左移运算符。
一、利用成员函数
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class C { public: C() {}; C(int a, int b):m_A(a),m_B(b) {} int m_A; int m_B; //利用成员函数 实现 <<运算符重载 void operator<<(ostream& cout) { cout << "m_A=" << this->m_A << "m_B = " << this->m_B; } }; void test01() { C p1(10, 10); p1<<cout; } int main() { test01(); system("pause"); return 0; }
显而易见p1只能写在<<的左侧。
二、全局函数
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class C { public: C() {}; C(int a, int b):m_A(a),m_B(b) {} int m_A; int m_B; }; //利用全局函数 实现 <<运算符重载 void operator<<(ostream& cout, Person& p) { cout << "m_A=" << p.m_A << "m_B = " << p.m_B; } void test01() { C p1(10, 10); cout<<p1; } int main() { test01(); system("pause"); return 0; }
但是这种写法,不能自动换行,于是
#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; class C { public: C() {}; C(int a, int b):m_A(a),m_B(b) {} int m_A; int m_B; }; //利用全局函数 实现 <<运算符重载 ostream& operator<<(ostream& cout, Person& p) { cout << "m_A=" << p.m_A << "m_B = " << p.m_B; } void test01() { C p1(10, 10); cout<<p1<<endl; } int main() { test01(); system("pause"); return 0; }
并且,如果类的属性为私有权限,还可以配合友元使用
这篇关于C++核心编程 14(二)左移运算符重载的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26MATLAB 中 A(7)=[];什么意思?-icode9专业技术文章分享
- 2024-11-26UniApp 中如何实现使用输入法时保持页面列表不动的效果?-icode9专业技术文章分享
- 2024-11-26在 UniApp 中怎么实现输入法弹出时禁止页面向上滚动?-icode9专业技术文章分享
- 2024-11-26WebSocket是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-26页面有多个ref 要动态传入怎么实现?-icode9专业技术文章分享
- 2024-11-26在 UniApp 中实现一个底部输入框的常见方法有哪些?-icode9专业技术文章分享
- 2024-11-26RocketMQ入门指南:搭建与使用全流程详解
- 2024-11-26RocketMQ入门教程:轻松搭建与使用指南
- 2024-11-26手写RocketMQ:从入门到实践的简单教程
- 2024-11-25【机器学习(二)】分类和回归任务-决策树(Decision Tree,DT)算法-Sentosa_DSML社区版