在线等 C++ 解惑
#include "stdafx.h"
#include <iostream>
using namespace std;
struct S{
void *operator new(unsigned int size,void *p,int i)
{
((S*)p)->i = i;
return p;
}
int i;
};
S ss;
S *pss = new(&ss,10)S();
int main()
{
cout << ss.i << " " << pss->i << endl;
S *pss2 = new(&ss,20)S();//加了()就是0,不加就是20 为什么?
cout << ss.i << " " << pss2->i << endl;
getchar();
return 0;
}
问题:
在S *pss = new(&ss,10)S();
和S *pss2 = new(&ss,20)S();
这两句中,如果S后面不加()则就是穿进去的数字,但加了后就是0了。但是但不调试时发现确实进了new函数,i的值也改变了,但执行完后,如果加了(),i又变成0了
在线等,一直没搞懂S后加()和不加的区别!
谢谢!