2013-08-07 55 views

回答

1

原始指针是由语言的语法与*引入一个指针:

int* ptr; 

这是一个正常的POD(在存储器中的“原始”数字地址)变量,所以它平凡自毁。什么是重要的,恼人原始指针是:

int* ptr = new int(42); 
因为事实的 ptr破坏是无操作

delete不会被调用,你必须做手工。智能指针环绕原始指针并销毁指向的对象(必要时这样做)。

C++ 11以unique_ptrshared_ptr的形式将智能指针引入到标准库中。在定位C++ 11时,你应该使用那些代替boost代码的代码。

数组的提及来自于我们可以将数组表示为指向第一个元素的指针和一些大小的概念。例如,char*是指向数组中第一个字符的指针,我们知道它在'\0'处结束。这种阵列的动态分配由new[]运算符完成(并且由delete[]破坏);标准库中的智能指针也可以处理这些类型,但通常建议使用std::vector

2

他们的措辞是不幸的。通过“原始”指针,人们通常指的是原始指针类型,而不管它们指向什么。他们的意思是:

scoped_ptr适用于指向单个对象的指针,而scoped_array适用于动态数组

相关问题