C++网易云课堂开发工程师-操作符重载

1.操作符重载,(可以使用成员函数,也可以使用非成员函数) this

所有的成员函数均隐藏着一个参数this.

this与调用者相互绑定。

complex c1,c2;                                                                                         对于两个复数的相加,暗含着左边加到右边。

inline complex&

complex::operator += (this, const complex& r){                                 this通常为隐藏的

  return _doapl(this, r);

}

2.return by reference 语法分析

inline complex&

_doapl(complex* ths, const complex& r){

  return *ths;

}

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

inline complex&                                                                                                  这一部分可以拥有返回类型,同样也可以不使用返回类型。

complex::operator += (const complex& r){                                                     但是,如果要使用连续加法,那么将不再能够使用了例如:C3 += C2 += C1;

  return __doapl(this,r);

}

3.非成员函数的运算符重载

inline complex                                                                                                      这个地方为什么不使用引用呢?

operator + (const complex& x, const complex& y){

  return complex(real(x) + real(y), imag(x) + imag(y));

}

~~~~~~~~为什么不返回引用呢~~~~~~~~~

因为返回的东西,是location的,是临时对象。

typename()                       complex()                                                                    创建临时的对象,重要!

原文地址:https://www.cnblogs.com/sky-z/p/9502548.html

时间: 2024-11-03 02:50:45

C++网易云课堂开发工程师-操作符重载的相关文章

C++网易云课堂开发工程师-头文件与类声明

区分Class的分类有两大经典,1包含指针的(complex),2不包含指针的(string). 1.complex 类分为:数据成员部分(在内存中占有数据成员的大小,数据可能会有很多份)与函数部分(只有一份). 2.string 类中:仅包含一个指针(这里理解为这一个指针指向,数据成员),创建出的每一个数据成员的大小实际上仅包含一个指针. 3.C++ programs代码基本形式 .h(header files) Classes Declaration(声明) .cpp() .h()标准库,引

C++网易云课堂开发工程师--堆,栈与内存管理

1.output函数 #include<iostream.h> ostream& operator<< (ostream& os, const String& str){ os << str.get_c_str(); return os; } { String s1("hello"); cout << s1; } 2.Stack(栈),heap(堆) { Complex c1(1,2);              

C++网易云课堂开发工程师--类模板

static complex data members static data members member functions static member functions 非静态成员函数:non-static member functions complex c1, c2, c3                                                                             complex c1, c2, c3 cout << c1

C++网易云课堂开发工程师--智能指针

template<class T> class shared_ptr{ public: T& operator*( ) const {return *px;} T* operator->( ) const {return px;} shared_ptr(T* p) : px(p) { } private: T* px; long* pn; } strcut Foo{ void method(void) { } }; shared_ptr<Foo> sp(new ) F

?《Python自动化测试修炼宝典》线上课程已经成功入驻网易云课堂......

<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课堂...... IT测试老兵利用工作之余,亲自录制的<Python自动化测试修炼宝典>线上课程已经成功入驻网易云课堂,想要提高测试技术的小伙伴可以线上购买课程进行学习. 课程背景 测试人员进阶实战课程.本套课程以作者多年测试实战经验为背景,结合大量测试案例深入浅出讲解目前主流web端.app端自动化测试框架以及使用Python如何从0到1实现接口测试框架的搭建. 课程特色 系统教学+实战案例+开放源码.涵盖Python3

网易云课堂-软件工程(C编码实践篇)

网易云课堂-软件工程(C编程实践篇) 识别代码工程质量: 代码风格: 封装接口: 可重用代码: 可重入函数和线程安全: 代码风格的原则:简明.易读.无二义性:代码风格原则在团队交流过程中非常重要.

聊一聊【网易云课堂】

(首先说明,这不是广告,知识我个人的一点感受而已) 若干天之前注册了网易云课堂,并填写.邮寄申请讲师的材料. 若干天之后的今天,终于收到通知,我通过了讲师认证,给我名字上加了个大大的"V".以及<petshop4.0源码解读>教程通过了审核,正式发布了.下班之前看了看,竟然已经有6名学习者了,就是不知道他们有没有真的学.有想学的直接去那里看就行了,免费的. 课堂教程的网址是:http://study.163.com/course/introduction/655003.ht

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序

网易云课堂_C++程序设计入门(上)_第2单元:丹青画松石– EGE图形库_第2节:一个简单的EGE程序 #ifndef _GRAPHICS_H_ #define _GRAPHICS_H_ #ifndef __cplusplus #error You must use C++ compiler, or you need filename with '.cpp' suffix #endif #include "ege.h" using namespace ege; #endif #inc

网易云课堂程序设计入门--C语言第七周:指针与字符串学习笔记

====================================== 第七周:指针与字符串学习笔记 网易云课堂 程序设计入门–C语言 指针与字符串 学习笔记 ====================================== 7-1指针初步 7-1-1类型大小与取地址运算 sizeof是一个运算符 给出某个变量货类型在内存中所占据的字节数 sizeof(int); sizeif(i); double变量在内存中占据的空间是int变量的两倍 { int a; a =6; prin