读书人

这个自定义的opeartor new的实现为什么

发布时间: 2012-05-20 16:03:12 作者: rapoo

这个自定义的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. 不会
[解决办法]
探讨

1. my*可以转成void*

::new my 实际分配了内存呢,调用构造函数对成员赋值.

分配内存的时候会用operator new(size_t)函数来分配,该函数是void*


2. 不会

读书人网 >C++

热点推荐