C++ Boost中的作用域指针:原始指针是什么意思?

C++ Boost中的作用域指针:原始指针是什么意思?,c++,boost,smart-pointers,raw-pointer,C++,Boost,Smart Pointers,Raw Pointer,我在Boost中读到了一篇关于智能指针的文章: 作用域\u ptr适用于原始指针,而作用域\u数组适用于动态数组 但我不明白他们所说的“原始指针”是什么意思,所以这句话也不明白 你们谁能给我解释一下吗?谢谢原始指针是由语言语法通过*引入的指针: int* ptr; 这是一个普通的POD(内存中的“原始”数字地址)变量,因此它的破坏非常简单。原始指针的重要和恼人之处在于: int* ptr = new int(42); 由于销毁ptr是不可操作的,因此不会调用delete,您必须手动执行。智能

我在Boost中读到了一篇关于智能指针的文章:

作用域\u ptr适用于原始指针,而作用域\u数组适用于动态数组

但我不明白他们所说的“原始指针”是什么意思,所以这句话也不明白


你们谁能给我解释一下吗?谢谢

原始指针是由语言语法通过
*
引入的指针:

int* ptr;
这是一个普通的POD(内存中的“原始”数字地址)变量,因此它的破坏非常简单。原始指针的重要和恼人之处在于:

int* ptr = new int(42);
由于销毁
ptr
是不可操作的,因此不会调用
delete
,您必须手动执行。智能指针环绕原始指针并销毁指向的对象(必要时)

C++11以
unique\u ptr
shared\u ptr
的形式将智能指针引入标准库。在针对C++11时,应该使用它们,而不是增强型


之所以提到数组,是因为我们可以将数组表示为指向第一个元素的指针和一些大小概念。例如,
char*
是指向数组中第一个字符的指针,我们知道它以
'\0'
结尾。此类数组的动态分配由
new[]
操作符完成(并通过
delete[]
进行销毁);标准库中的智能指针也可以处理这些类型,但通常建议使用
std::vector

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

作用域_ptr适用于指向单个对象的指针,而作用域_数组适用于动态数组