在线等 C++ 解惑
#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后加()和不加的区别!
谢谢!
相关推荐
cpp-Sanguosha是一个流行的在线棋盘游戏
Sanguosha是一个流行的在线棋盘游戏,这个项目试图克隆Sanguosha在线版本。 整个项目是用C 编写的,使用Qt 的图形视图框架作为游戏引擎。 我试过许多其他开源游戏引擎
cpp-Web在线斗地主游戏
Web在线斗地主游戏
cpp-programming-practice:北大 C++ 程序设计实习在线公开课课程作业,包括课程作业和编程作业
cpp-programming-practice 北大 C++ 程序设计实习在线公开课课程作业,包括课程作业和编程作业
推荐几款实用的C++ 在线工具
Wandbox 支持多种编程语言 * 多个编译器版本在线编译运行的网站。 可以在这里做方便、快速地一些小实验、尝试一些编程语言的新特性,比如 C++20。 链接:https://wandbox.org/ Quick C++ Benchmark 可以快速对一些 C++ 代码片段进行 benchmark 并可视化显示出来。 支持多个版本的 clang 和 gcc。 背后用的应该是 google benchmark 这个开源库,你也可以在自己的机器上安装这个库。 链接:https://quick-bench.com/q/eP40RY6zDK-eJFdSSPBINa0apTM
5款C++在线编译器推荐[代码]
本文推荐了5款常用的C++在线编译器,包括Coding Ground、Codechef、Geeksforgeeks、OnlineGDB和Compiler Explorer。这些编译器均支持C++14,并具备代码高亮、错误提示等基本功能。其中,Coding Ground功能全面但缺少智能提示;Codechef功能完善但执行速度较慢;Geeksforgeeks支持全屏模式但自定义设置有限;OnlineGDB支持调试但不支持创建文件;Compiler Explorer适合查看汇编代码但功能复杂。每款编译器各有优缺点,用户可根据需求选择适合的工具。


