#include <iostream>
#include <string>
using namespace std;
int* fun() {
return new int[2];
}
int fun(int *p){
delete[] p;
return 0;
}
void fun(int *p, int q){
p[q]*= 2;
}
void fun(int *p, int q, int r){
p[q] = r;
}
int main(){
int *v = fun();
fun(v,0,1); fun(v,1,2);
fun(v,0);
cout<< v[1]+ v[0];
fun(v);
//the answer gives 4.
}
0
A
回答
0
由于运算符重载,您可以拥有尽可能多的函数,只要它们具有相同的名称(在本例中为fun)。有不同的参数。
- 因此,有趣的所述第一呼叫与大小2创建一个空的数组,并将其分配给变量v。
- 第二呼叫在V的索引0将值设置为1。因此,
v[0]
= 1 。 - 第三个调用将v的索引1处的值设置为2.因此,
v[1]
= 2。 - 第四次调用将v [0]处的值乘以2.因此,
v[0]
= 2。 cout
打印加入v[0]
和v[1]
其中= 4!- 最后一次调用fun将删除数组(这是动态分配的,从而防止内存泄漏)。
+0
这只是正常的重载而不是操作符重载,因为函数不是成员函数。 – hnefatl
0
纵观主要方法,
你是一个指向v安装的方法fun()
。
通过调用fun(v,0,1)
和fun(v,1,2)
,您正在使用运算符重载来调用一个有三个参数的fun函数。
第一次调用将创建一个大小为2的数组(如int[2]
所示),然后第二次调用将v数组的第0个索引设置为1,则第三次调用将将索引2处的数组值设置为2 ,然后第四次调用会将数组的第0个索引乘以2(用有趣的方法用两个参数表示)。
你的打印语句然后加在一起的v的值[0]和v [1],从而产生的4
总和相信然后接着的fun(v)
最后的方法调用将导致删除阵列然后结束程序,通过返回表示0
+0
谢谢..不知何故,我明白更好.. – Gusccmm
0
事情是这样的:
int main(){
int *v = fun(); //call a function that creates an array of 2 items in the heap and returns a pointer to it
fun(v,0,1); fun(v,1,2); //call functions that write values (1 and 2) to 0 and 1 element of the array by the pointer v
fun(v,0); //call functions that multiply the value of the index 0 by 2 obtained by the pointer v array (1*2=2)
cout<< v[1]+ v[0]; //output of sum of numbers (2+2=4)
fun(v); //call a function that frees memory in the heap on the received pointer
//the answer gives 4.
}
相关问题
- 1. 在C中如何以及为什么float main()工作?
- 2. -1%4的正确答案是什么?
- 3. Android测验应用程序以及如何为多个正确答案编码
- 4. 为什么我的随机答案getter的代码不工作?
- 5. 为什么OpenMP程序每次都给我不同的答案?
- 6. 该程序如何工作C?
- 7. 为什么我的程序不显示答案? (Visual Studio)
- 8. 伯爵的答案是88:为什么?
- 9. 这个auto_ptr程序是如何工作的以及它做了什么?
- 10. 应该如何(以及为什么)初始化JUL配置类?
- 11. EJB。什么是它为什么存在以及它如何工作?
- 12. 如何以及为什么更新Web应用程序?
- 13. Java Graphics.drawImage()如何工作以及ImageObserver的作用是什么
- 14. 为什么该程序无法正常工作?
- 15. 寻找答案,为什么书中的答案是不等于我从我的程序
- 16. 为什么Map.mapValues更改答案
- 17. 为什么$ sum 6的答案是?
- 18. 为什么以及应该如何使用promise()方法?
- 19. 为什么我得到以下不同的答案
- 20. 为什么我得到undefined作为这段代码的答案?
- 21. 什么是HOPOPT协议,以及socket()如何工作?
- 22. c编程,为什么printf不工作?
- 23. Angular Material如何工作以及为什么需要为Angular 2完全重写?
- 24. 什么是paypal api的txn_id,以及为什么应该检查它,以及如何?
- 25. IIS包含什么以及它如何工作?
- 26. 什么是SQL中的procedure.ini以及.ini如何工作?
- 27. 什么是sb协议以及内部工作如何?
- 28. python Rlock如何工作以及Rlock的所有者是什么?
- 29. 这个c代码有什么问题?答案始终为零?
- 30. 这个程序为什么不工作
一个好时机,开始学习调试 – Amadeus
也请格式化你的代码,这将使它更好看。 – bobtheboy
最好拿到更具体。该计划中的哪些内容会给您带来困难?你坚持了一些语法吗?例如,如果你不明白这里发生了什么'int * fun(){ return new int [2]; }'你可以得到的最好的帮助是'去和重读你的课本的前几章。“ – user4581301