(十九)特殊工具与技术
2014-06-27 16:43
141 查看
auto sp = new string("a value");
auto arr = new string[10];
new表达式调用一个名为 operator new(或operator new[]) 的标准库函数,该函数分配一块足够大的,原始的,未命名的内存空间,运行相应的构造函数,传入初始值,返回空间地址.
delete sp;
delete [] arr;
delete表达式 对sp对象或arr数组中的元素调用相应的析构函数,然后调用名为 operator delete(或者 operator delete[])的标准库释放内存空间.
可以再全局定义 operator new 函数和 operator delete函数,也可以将他们定义为成员函数.如果是成员函数,那么他们是隐士静态的,相当于加了 static,也可以手动添加.
定义new 返回类型必须是 void *,第一个参数必须是size_t
定义delete 返回类型必须是void, 第一个参数类型必须是void*;
定为new,允许我们在一个特定的,预先分配的内存低智商构造对象,当传入一个指针类型的实参时,定为new表达式只构造对象但不分配内存.
显示调用析构函数
sp->~string();//析构函数会销毁对象,但是不会释放内存,还可以重新使用该空间
运行时类型识别(RTTI)
typeid运算符,用于返回表达式的类型.
dynamic_cast运算符,用于将基类的指针或引用安全的转换成派生类的指针或引用
当作用于一个类型,切该类型有虚函数时,运算符使用指针或引用所绑定对象的动态类型.
auto arr = new string[10];
new表达式调用一个名为 operator new(或operator new[]) 的标准库函数,该函数分配一块足够大的,原始的,未命名的内存空间,运行相应的构造函数,传入初始值,返回空间地址.
delete sp;
delete [] arr;
delete表达式 对sp对象或arr数组中的元素调用相应的析构函数,然后调用名为 operator delete(或者 operator delete[])的标准库释放内存空间.
可以再全局定义 operator new 函数和 operator delete函数,也可以将他们定义为成员函数.如果是成员函数,那么他们是隐士静态的,相当于加了 static,也可以手动添加.
定义new 返回类型必须是 void *,第一个参数必须是size_t
定义delete 返回类型必须是void, 第一个参数类型必须是void*;
void *operator new(size_t size) { if(void *mem = malloc(size)) return mem; else throw bad_alloc(); } void operator delete(void *mem) noexcept { free(mem); }
定为new,允许我们在一个特定的,预先分配的内存低智商构造对象,当传入一个指针类型的实参时,定为new表达式只构造对象但不分配内存.
new(add) type new(add) type (initializers) new(add) type [size] new(add) type [size] {初始值列表} //add必须是一个指针,在initializers中提供一个逗号分隔的初始值列表
显示调用析构函数
sp->~string();//析构函数会销毁对象,但是不会释放内存,还可以重新使用该空间
运行时类型识别(RTTI)
typeid运算符,用于返回表达式的类型.
dynamic_cast运算符,用于将基类的指针或引用安全的转换成派生类的指针或引用
当作用于一个类型,切该类型有虚函数时,运算符使用指针或引用所绑定对象的动态类型.
相关文章推荐
- 35、C++ Primer 4th笔记,特殊工具与技术,优化内存分配(2)
- 37、C++ Primer 4th笔记,特殊工具与技术,类成员指针
- 浅析C++的特殊工具与技术
- 特殊工具与技术---—cplusplus
- 第十八章 特殊工具与技术
- C++ Primer学习系列(6):模板与泛型编程/用于大型程序的工具/特殊工具与技术
- c++primer要点-特殊工具与技术
- [C/C++] 第18章:特殊工具与技术《 C++ Primer 》
- [C/C++] 第18章:特殊工具与技术《 C++ Primer 》
- c++Primer,十七,十八,用于大型程序的工具,特殊工具与技术
- 38、C++ Primer 4th笔记,特殊工具与技术,嵌套类
- 《C++ Primer 4 Answer Book》 整理[17]——第18章 特殊工具与技术
- C++笔记(5)-特殊工具与技术
- 【C++ Primer】第18章 特殊工具与技术
- C++的特殊工具与技术
- 36、C++ Primer 4th笔记,特殊工具与技术,运行时类型识别
- 第十八章:特殊工具与技术
- .C++ primer第二次阅读学习笔记(第18章:特殊工具与技术:优化内存分配)
- C++ Primer 学习笔记_98_特殊工具与技术 --优化内存分配
- C++ Primer 学习笔记_104_特殊工具与技术 --嵌套类