由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - c++ new的一个问题
相关主题
问一个placement new 和 operator new的问题来问一个关于smart pointer的弱问题
Qualcomm面经关于数组size的问题
bloomberg onsite一个实际的排序问题
什么情况下pass by reference比pass by pointer好?Apple的一些C++概念题
C++ Q48: illegal operation (C33)贡献一道 C++ 题目
请教unique_ptr vs auto_ptr问个算法题
A problem about Heap and Stack.C++里面能否检测一个虚函数是否被重载?
问一个C++的小细节,和leetcode也有关大牛来做一下这道题
相关话题的讨论汇总
话题: operator话题: void话题: new话题: std话题: throw
进入JobHunting版参与讨论
1 (共1页)
j*****y
发帖数: 1071
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吗?
b*********h
发帖数: 103
2
是转成了 operator new (sizeof(T))
程序员可以自己 new 一个...哈哈
j*****y
发帖数: 1071
3
看来 new 的 return 也是没有 type的, 也是 void * 的
但是这么调用 new (23) 也不对阿
如何用 size 做为 参数来调用 new 呢?

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

b*********h
发帖数: 103
4
T* a = (T*) operator new (size);
j*****y
发帖数: 1071
5
看来我门常用的 new是系统自己搞了一个 macro ?

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

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

j*****y
发帖数: 1071
8
有个问题,一般讲重载 是重载 new 还是 重载 operator new 阿?

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

b*********h
发帖数: 103
9
operator new
h*******s
发帖数: 8454
10
印象中effective 西加加还是more effective里面讲过这个
operator new is not new operator

【在 j*****y 的大作中提到】
: 看来我门常用的 new是系统自己搞了一个 macro ?
1 (共1页)
进入JobHunting版参与讨论
相关主题
大牛来做一下这道题C++ Q48: illegal operation (C33)
也来一道c++的题请教unique_ptr vs auto_ptr
大家新年好。 请教一个 c interview question (转载)A problem about Heap and Stack.
google电话面试问一个C++的小细节,和leetcode也有关
问一个placement new 和 operator new的问题来问一个关于smart pointer的弱问题
Qualcomm面经关于数组size的问题
bloomberg onsite一个实际的排序问题
什么情况下pass by reference比pass by pointer好?Apple的一些C++概念题
相关话题的讨论汇总
话题: operator话题: void话题: new话题: std话题: throw