智能指针可以用const修饰吗 举例子
时间: 2023-09-15 11:22:24 浏览: 112
智能指针可以使用const修饰,这样可以保证指针指向的对象不被修改。
例如:
```c++
#include <memory>
#include <iostream>
int main()
{
const std::unique_ptr<int> ptr = std::make_unique<int>(10);
std::cout << *ptr << std::endl; // 输出 10
// 尝试修改指针指向的对象,编译报错
// *ptr = 20;
return 0;
}
```
在上面的例子中,我们使用了`const`关键字修饰了指向`int`类型的`unique_ptr`指针`ptr`,这表示该指针所指向的对象不能被修改。如果尝试修改指针所指向的对象,编译器会报错。
相关问题
const修饰的指针变量
const 修饰的指针变量表示指针指向的数据是不可修改的。它可以有两种形式:
1. 指向常量的指针(Pointer to a constant):const修饰的是指针所指向的数据,指针本身是可以修改的。例如:
```
const int* ptr;
```
这里 ptr 是一个指向常量的指针,它可以指向一个 int 类型的常量,但不能通过 ptr 修改所指向的数据。
2. 常量指针(Constant pointer):const修饰的是指针本身,指针指向的数据可以修改。例如:
```
int* const ptr;
```
这里 ptr 是一个常量指针,它指向一个 int 类型的变量,但不能通过修改 ptr 来改变其指向的地址。
需要注意的是,const 修饰符可以放在 * 前面或者后面,效果是一样的。例如上面两个例子中的 const int* 和 int* const 是等价的。
希望能解答你的问题!如果还有其他问题,请继续提问。
const指针 c语言例子
在 C 语言中,const 指针是一种特殊的指针,它指向的内存位置的值是不能被修改的。
举个例子,假设有一个整型变量 x,它的值为 10。如果定义一个指向 x 的指针 p,则可以通过 *p 来修改 x 的值,例如:
```
int x = 10;
int *p = &x;
*p = 20; // x 的值变成了 20
```
但是,如果定义一个指向 x 的 const 指针 p,则不能通过 *p 来修改 x 的值,因为 *p 被定义为常量。例如:
```
int x = 10;
const int *p = &x;
*p = 20; // 这里会报错,因为 *p 是常量
```
这里的 const 是指针的类型修饰符,它告诉编译器在程序中不能通过这个指针来修改所指向的内存位置的值。
常量指针有时也称为只读指针,因为它只能用来读取所指向的内存位置的值,不能用来修改它。