这个自定义的opeartor new的实现为什么没有编译警告?
- C/C++ code
#include"stdafx.h"#include<iostream>using namespace std;struct my{ void* operator new(size_t s){ cout<<s<<endl; return ::new my;//这里返回的是一个my指针,但是operator new声明是返回void* }};int main(void){ my* pm=new my;//这里返回void*,编译器没有警告类型被强转成了my* return 0;}为什么以上两个强制转型,编译的时候都没有警告出来?
我用的VC2010.谢谢
[解决办法]
1. my*可以转成void*
::new my 实际分配了内存呢,调用构造函数对成员赋值.
分配内存的时候会用operator new(size_t)函数来分配,该函数是void*
2. 不会
[解决办法]