运算符重载笔记
来源:互联网 发布:三位一体 for mac 编辑:程序博客网 时间:2024/06/06 12:38
创建临时对象
将自加后的对象赋给另一个对象,我们需要创建一个临时对象,然后返回该对象
#include <iostream>using namespace std;class num{public:num(){n=1;}~num(){}int get()const{return n;}void set(int x){n=x;}num operator++(){++n;num t; //临时对象tt.set();return t;}private:int n;};int main(){return 0;}
创建无名临时对象
要想实现以上功能也可以不用创建一个临时对象,假如我们有一个带参数的构造函数,那么我们只要这个构造函数返回即可。
#include <iostream>using namespace std;class num{public:num(){n=1;}num(int i){n=i;}~num(){}int get()const{return n;}void set(int x){n=x;}num operator++(){++n;return num(n);}private:int n;};int main(){return 0;}
取消创建临时对象
创建一个对象将会调用构造函数,来为该对象开辟内存空间,而销毁该对象则要调用析构函数来释放内存,每创建一次对象,系统都要牺牲一定的速度和内存空间,this指针就是当前对象的标签,而当前对象的成员变量也会被编译器自动贴上this标签以证明是当前对象的,那么只要将当前对象的成员变量自己,然后返回this指针指向的当前对象即可。
#include <iostream>using namespace std;class num{public:num(){n=1;}num(int i){n=i;}num(const num &s){this->n=s.n;} //为了避免按值返回创建一个*this的临时副本,我们最好把operator的返回值定义为按别名返回,~num(){} //并且我们不可能只想能够++++i这样的操作,,既将i进行前置自加后再进行自加,因此我们有必要将它的返回值也int get()const{return n;} //定义为常量如:void set(int x){n=x;}num operator++() //const num &operator(){}{++n;return *this;}private:int n;};int main(){return 0;}
以上重载的是前置自加运算符,下面重载一下后置运算符。
#include <iostream>using namespace std;class num{public:num(){n=1;}num(int i){n=i;}num(const num &s){this->n=s.n;}~num(){}int get()const{return n;}void set(int x){n=x;}const num &operator++() //前置自加{++n;return *this; }const num operator++(int o) //后置自加 int o参数没有任何实际意义,只是区分与前面的前置自加重载的区分。 {num temp(*this); //利用先把未自加的值赋给临时对象,然后自加值,然后返回临时对象。由于临时对象一旦调用完就会成为++n; //找出作用域的空引用,所以不能按别名返回,得用按值返回。return temp;}private:int n;};int main(){return 0;}
- 运算符重载笔记
- 运算符重载笔记
- 运算符重载笔记
- 运算符重载 学习笔记
- C++运算符重载笔记
- C++运算符重载笔记
- 运算符重载相关 笔记
- c++运算符重载笔记
- 笔记:运算符的重载
- 运算符重载学习笔记
- 【笔记-C++】 运算符重载
- c#学习笔记(七)运算符重载
- C++学习笔记之运算符重载
- C++学习笔记十四-运算符重载
- c++学习笔记(运算符重载)
- 《C++程序设计》笔记之-运算符重载
- c++笔记——运算符重载
- 【c++笔记十】运算符重载
- C++ - Implement a string class with basic functionality
- 利用钩子函数来捕捉键盘响应的windows应用程序
- Windows7重建图标缓存
- C语言
- Add Linkage between Team and MatchDay, with remarks and bonus
- 运算符重载笔记
- hdu 1998
- C语言面试题——位运算
- 《那些年啊,那些事——一个程序员的奋斗史》——113
- Linux网络协议栈 -- socket创建(1)
- 正则的反斜杠问题
- 一个眼神
- tcpdump抓包命令
- A星 造就 游戏界超级玛丽的华丽路线 代码的力量