avatar
谁家的媳妇?# Joke - 肚皮舞运动
j*y
1
这是 c++ header file new 里面的原型
void* operator new(std::size_t) throw (std::bad_alloc);
void* operator new[](std::size_t) throw (std::bad_alloc);
void operator delete(void*) throw();
void operator delete[](void*) throw();
void* operator new(std::size_t, const std::nothrow_t&) throw();
void* operator new[](std::size_t, const std::nothrow_t&) throw();
void operator delete(void*, const std::nothrow_t&) throw();
void operator delete[](void*, const std::nothrow_t&) throw();
也就是说 new 后面跟的是一个 size 的参数
可是平时用都是这么用的
A * p = new A;
这里 new 后面是一个类型,难道哪里把这个类型转化成了一个 size吗?
avatar
r*e
2
avatar
b*h
3
是转成了 operator new (sizeof(T))
程序员可以自己 new 一个...哈哈
avatar
s*e
4
太感人了,太贤惠了
avatar
j*y
5
看来 new 的 return 也是没有 type的, 也是 void * 的
但是这么调用 new (23) 也不对阿
如何用 size 做为 参数来调用 new 呢?

【在 b*********h 的大作中提到】
: 是转成了 operator new (sizeof(T))
: 程序员可以自己 new 一个...哈哈

avatar
d*l
6
其他地方怎么打扫?
avatar
b*h
7
T* a = (T*) operator new (size);
avatar
j*y
8
看来我门常用的 new是系统自己搞了一个 macro ?

【在 b*********h 的大作中提到】
: T* a = (T*) operator new (size);
avatar
b*h
9
上面列的是 operator new 的,它和 new 是不一样的
当使用 new 时,首先调用 operator new 分配空间,然后再初始化或调用构造函数
对于一个基本类型,下面是一样的
T* a = new T;
T* a = (int*) operator new (sizeof(T));
但是 T 是一个 class 就不一样了,第一个还会调用构造函数,第二个不会
avatar
j*y
10
多谢 :)

【在 b*********h 的大作中提到】
: 上面列的是 operator new 的,它和 new 是不一样的
: 当使用 new 时,首先调用 operator new 分配空间,然后再初始化或调用构造函数
: 对于一个基本类型,下面是一样的
: T* a = new T;
: T* a = (int*) operator new (sizeof(T));
: 但是 T 是一个 class 就不一样了,第一个还会调用构造函数,第二个不会

avatar
j*y
11
有个问题,一般讲重载 是重载 new 还是 重载 operator new 阿?

【在 b*********h 的大作中提到】
: 上面列的是 operator new 的,它和 new 是不一样的
: 当使用 new 时,首先调用 operator new 分配空间,然后再初始化或调用构造函数
: 对于一个基本类型,下面是一样的
: T* a = new T;
: T* a = (int*) operator new (sizeof(T));
: 但是 T 是一个 class 就不一样了,第一个还会调用构造函数,第二个不会

avatar
b*h
12
operator new
avatar
h*s
13
印象中effective 西加加还是more effective里面讲过这个
operator new is not new operator

【在 j*****y 的大作中提到】
: 看来我门常用的 new是系统自己搞了一个 macro ?
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。