const_cast用法

const_cast

const_cast<> <>必须是指针或引用

const std::shared_ptr去 const

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <memory>

struct A{
int x = 0;
};

int main(){
const std::shared_ptr<const A> const_ptr(new A());
std::cout << typeid(const_ptr).name() << std::endl;

//ptr->x = 100; //error
//std::shared_ptr<A> ptr = const_cast<std::shared_ptr<A>>(const_ptr); //error
std::shared_ptr<const A> ptr = const_cast<std::shared_ptr<const A> &>(const_ptr); //必须是const_cast<&> 必须加引用

A &a = const_cast<A &>(*const_ptr); // const_cast<&> 必须加引用
a.x = 100;

std::cout << "a.x = " << a.x << std::endl;
std::cout << "const_ptr->x = " << const_ptr->x << std::endl;
return 0;
}


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!