操作符重载 – 上 --- C++标准库、操作符重载、友元
来源:互联网 发布:php 正规表达式 编辑:程序博客网 时间:2024/04/29 07:56
使用C++标准库
C++标准库并 不是 C++语言的一部分。
C++标准库是由C++语言编写而成的类库和函数的集合。
C++标准库中定义的类和对象都位于std命名空间中。
需要使用 using namespace std;
C++标准库的头文件都不带.h后缀。
C++标准库涵盖了C库的功能,C库中 < name.h > 头文件对应C++中的 < cname > 。
例如 #include < stdio.h > 对应 #include < cstdio >
C++标准库中的输入与输出: cin 和 cout
要用到:
#include <iostream>using namespace std;
使用举例:
C++中的操作符重载可以改变左移和右移运算符的语义,因此可以采用<<和>>操作符来实现对数据的输出和输入。
操作符重载
操作符重载为操作符提供不同的语义。
C++中操作符重载的本质:
C++中通过operator关键字可以利用函数扩展操作符。
operator的本质是通过函数重载实现操作符重载。
用法举例:
上面程序中的Complex是一个结构体。
重载的操作符在使用时如 c1 + c2 ,本质上是调用了一个重载函数。
但是,在上面的函数中,不能访问类中的private成员变量,因此应当采用友元的方式,赋予上面的重载函数调用private成员变量的权限。
C++中的类的友元
private声明使得类的成员不能被外界访问。
但是通过friend关键字可以例外的开放权限
使用举例:
上面程序中,重载函数可以直接通过对象名来访问对象中的private成员变量。
需要注意的是:使用友元定义的函数,他不是成员函数,在上面的例子中,+号重载函数是全局函数,不是类的成员函数。只是在这个全局函数中,直接通过类对象就可以访问私有成员。
左移操作符重载:
friend ostream& operator<< (ostream& out, const Complex& c);ostream& operator<< (ostream& out, const Complex& c){ out<<c.a<<" + "<<c.b<<"i"; return out;//此处必须要返回,这样才能实现一次<<输出之后继续<<接着输出,如cout<<a<<endl}//ostream是cout显示的类型
小结
操作符重载是C++的强大特性之一。
操作符重载的本质是通过函数扩展操作符的语义。
operator关键字是操作符重载的关键。
friend关键字可以对函数或类开放访问权限。
操作符重载遵循函数重载的规则。
- 操作符重载 – 上 --- C++标准库、操作符重载、友元
- 操作符重载与友元函数
- C++操作符重载,友元;
- 重载操作符与友元
- c++友元实现操作符重载
- C++操作符重载 友元基础教程
- 操作符重载及友元函数
- C++【操作符重载】
- c++::操作符重载
- C++:操作符重载
- C++之一元操作符重载
- 操作符重载(C++)
- C++-重载操作符<< >> = + - * /
- c++_操作符重载
- C/C++_lesson_10_静态函数、函数指针、友元、操作符重载
- C++ 运算符流操作符重载和友元
- 操作符重载为成员函数还是友元函数?
- 友元继承、<模板类、重载操作符>
- oj1982: C语言实验——两个数比较
- android开发:存储文件工具
- 内存管理的总结
- 关于负载均衡
- bug宝典Hadoop篇 Could not connect to localhost:9090 (code THRIFTTRANSPORT): TTransportException('Could
- 操作符重载 – 上 --- C++标准库、操作符重载、友元
- java源码-Integer
- 棋牌游戏开发
- 概率与期望总结第一讲
- SpringJunitTest问题
- 二分查找模板
- Masonry介绍与使用实践:快速上手Autolayout
- window.location.reload
- API-String类和StringBuffer类