博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c++操作符重载_12
阅读量:7073 次
发布时间:2019-06-28

本文共 3403 字,大约阅读时间需要 11 分钟。

一。使用C++标准库

  1.c++标准库并不是C++语言的一部分

  2.C++标准库是由C++语言编写而成的类库和函数的集合

  3.C++标准库定义的类和对象都位于STD命名空间中

  4.C++标准库的头文件都不带.h后缀

  5.C++标准库涵盖了C库的类型

二。操作符对象相加的函数实现

#include 
#include
using namespace std;struct Complex{ int a; int b; };Complex add(const Complex& c1,const Complex& c2){ Complex ret = {
0,0}; ret.a = c1.a + c2.a; ret.b = c1.b + c2.b; return ret;}int main(int argc, char *argv[]){ Complex c1 = {
1,2}; Complex c2 = {
3,4}; Complex c3 = add(c1,c2); cout << c3.a << endl; cout << c3.b << endl; cout << "Press the enter key to continue ..."; cin.get(); return EXIT_SUCCESS;}

三。操作符加号的重载

  1.c++中通过operator 关键字可以利用函数扩展操作符

  2.operator的本质是通过函数重载可以实现操作符重载

#include 
#include
using namespace std;struct Complex{ int a; int b; };Complex operator+ (const Complex& c1,const Complex& c2){ Complex ret = {
0,0}; ret.a = c1.a + c2.a; ret.b = c1.b + c2.b; return ret;}int main(int argc, char *argv[]){ Complex c1 = {
1,2}; Complex c2 = {
3,4}; Complex c3 = c1 + c2; cout << c3.a << endl; cout << c3.b << endl; cout << "Press the enter key to continue ..."; cin.get(); return EXIT_SUCCESS;}

 三。C++类中的友元(重点)

  1.private声明使得类的成员不能被外界访问

  2.通过 friend 关键字可以例外的开放权限

   Complex operator+ (const Complex& c1,const Complex& c2)

   就可以访问私有成员。

#include 
#include
using namespace std;class Complex{ int a; int b; public: Complex(int a = 0,int b = 0) { this-> a = a; this-> b = b; } int getA() { return a; } int getB() { return b; } friend Complex operator+ (const Complex& c1,const Complex& c2); friend ostream& operator <<(ostream& out, const Complex& c);};ostream& operator <<(ostream& out, const Complex& c)  //函数是重点{ out << c.a << "+" << c.b <<"i"; return out;}Complex operator+ (const Complex& c1,const Complex& c2){ Complex ret = (0,0); ret.a = c1.a + c2.a; ret.b = c1.b + c2.b; return ret;}int main(int argc, char *argv[]){ Complex c1(1,2); Complex c2(3,4); Complex c3 = c1 + c2; operator <<(cout,c1); cout << c3 << endl; cout << "Press the enter key to continue ..."; cin.get(); return EXIT_SUCCESS;}

 四。小结

  1.操作符重载是C++的最强大特性之一

  2.操作符重载的本质是通过函数扩展操作符的语义

  3.operator 关键字是操作符重载的关键

  4.friend 关键字可以对函数或者类开发访问权限

  5.操作符重载遵循函数重载的规则

五。操作符重载

  1.当无法修改左操作数的类时,使用全局函数进行重载

  2.当=,()和->操作符只能通过成员函数进行重载

六。操作符重载

  1.重载符+号 

Complex operator+ (const Complex& c1,const Complex& c2){    Complex ret = (0,0);    ret.a = c1.a + c2.a;    ret.b = c1.b + c2.b;        return ret;}

  2.重载符<<号

ostream& operator <<(ostream& out, const Complex& c)  //函数是重点{    out << c.a << "+" << c.b <<"i";         return out;}

  3.重载符()号

int operator() ()    {        int ret = a2;        int t = a2;                a2 = a2 + a1;        a1 = t;                return ret;    }

  4.重载符&&

bool operator&& (const Test& obj)    {        cout<<"bool operator&& (const Test& obj)"<

  5.重载符==

bool Array::operator== (const Array& obj){    bool ret = true;        if( mLength == obj.mLength )    {        for(int i=0; i

  6.重载符!=

bool Array::operator!= (const Array& obj){    return !(*this == obj);}

 

  

 

  

转载于:https://www.cnblogs.com/lvxiaoning/p/7640070.html

你可能感兴趣的文章
extern"C"
查看>>
在VC++中实现无标题栏对话框的拖动
查看>>
opengl 教程(9) 顶点属性插值
查看>>
asp.net的session mode的inproc改为StateServer,网站不可以访问
查看>>
【SAS NOTE】where & time
查看>>
图片旋转和翻转
查看>>
定位和可见性
查看>>
c语言中的qsort方法的使用
查看>>
Android notification详解
查看>>
程序线程paip.程序不报错自动退出的解决
查看>>
(转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
查看>>
在Intellij IDEA 12中Tomcat无法调试
查看>>
ExtJs十四(ExtJs Mvc图片管理之四)
查看>>
nullnullHandling Features Not Supported on TV 在电视上处理不支持的功能
查看>>
数据库并发操作
查看>>
PostgreSQL在何处处理 sql查询之十一
查看>>
正能量之项目经理的自我修养
查看>>
[置顶] Android下实现自动关机的方法总结
查看>>
POJ 2533 Longest Ordered Subsequence
查看>>
【IUML】回归和梯度下降
查看>>