C++中的圓括號重載
来源:互联网 发布:数控铣床编程太阳图案 编辑:程序博客网 时间:2024/06/05 00:23
重載是C++靜態多態性的實現,不僅可以對函數進行重載,還可以對運算符進行重載,其中對圓括號()的重載容易引起混淆:
- 對圓括號進行重載的時候,是可以有默認參數的,而其它運算符在重載的時候是沒有默認參數的。
- 對圓括號進行重載的時候,參數是放在圓括號裏面的。這點和加號(+)等運算符是不一樣的。
下面舉一個例子,定義一個box類,有x,y,z三個數據成員表示其長寬高,定義showvolume()函數顯示體積。
#include <iostream>using namespace std;class box{public: box(int _x=1,int _y=2 ,int _z=3)//構造函數,用於指定這個長方體的長寬高,並且設定默認值分別爲1,2,3 { x=_x; y=_y; z=_z; } int showvolume()//顯示長方體的體積 { cout<<"The volume is "<<x*y*z<<endl; } int operator()(int _x=4,int _y=5,int _z=6)//對圓括號進行重載 { cout<<"using operator overload"<<endl; x=_x; y=_y; z=_z; return 0; }private: int x; int y; int z;};int main() { box box1(2,3,4); box1.showvolume();//這個時候顯示的是24,默認設定 box1(1,1,1);//如果這裏沒有對圓括號進行重載,則會報錯。對於圓括號進行重載之後,可以繼續編譯,而且出現"using operator overload",表明已經調用圓括號的重載 box1.showvolume();//結果顯示爲1 return 0;}
在對象申明的時候可以在對象名後面加上圓括號,寫入參數,此時調用的是構造函數。如果類沒有對圓括號進行重載,後面再使用對象名(),則編譯就會報錯。如上面的box1(1,1,1)就會報錯,定義圓括號重載之後,第二次調用box1(1,1,1)則沒有問題。
圓括號的重載簡化了代碼量,但是在使用的時候要和構造函數區分開來。
博文說明
- 本博文爲作者根據自身之經驗所創作,限於作者水平,錯誤疏漏在所難免。如果您發現文章中有任何不合適的地方,歡迎與作者聯繫。
- 如果萬幸博文爲您認可,需要轉載或者其它操作,請與作者聯繫。
- 文章用正體中文書寫,但是沒有採用港澳臺等地的術語翻譯,主要是便於和大家交流。
阅读全文
0 0
- C中的#
- c 中的 # #@ ##
- C中的#
- c中的“:”
- 【C++】C++中的C
- C/C 中的static关键字
- [C学习]C中的变量
- [C学习]C中的变量(?)
- c++,C#,java中的类
- C 项目中的extern "C" {}
- C++/C 使用中的语法错误
- Objective-c中的C特性
- C++/C中的预处理命令;
- C / C ++中的数组讲解
- [c/c++]C中的三元运算
- c中的数据类型
- C#中的委托
- C中的预处理命令
- 【HDU
- HDUOJ 1874 畅通工程续 Dijkstra算法
- 完全背包问题(动态规划(DP))
- hdu 6119 小小粉丝度度熊(尺取法)
- MATLAB中的常用清除命令有哪些?
- C++中的圓括號重載
- bookstrap 联想下拉框
- PHP之print
- HDU 1863 畅通工程【最小生成树】
- PHP 5 MySQLi 函数
- 2017 HDU 6103 多校联合赛 Kirinriki
- 关于do while与wihle循环和for循环之间的出入
- linux修复丢失的分区表
- String s = new String("xyz");创建了几个对象的问题?