ZKX's LAB

c++是否应避免使用普通指针,而使用智能指针(包括shared,unique,weak)? 智能指针与普通指针

2021-03-08知识12

c++中普通指针和智能指针之间可以互相转换吗 普通指针到智能指针的转换int*iPtr=new int(42);shared_ptr<;int>;p(iPtr);智能指针到普通指针的转换int*pI=p.get();

什么是智能指针,说说三种智能指针简单用法 当有几个对象 共同用一个资源时,则它们同时指向了这个资源,如果用普通的指针,则在其中一个对象析构时就会将这个共用的资源销毁,有了智能指针就不用担心,它里面有对象。

C++有了智能指针,还需要用普通指针吗

c++中普通指针和智能指针之间可以互相转换吗 智能指针转普通指针的话可以,用get函数就行。普通指针转智能指针劝你三年之内不要考虑。

c++中普通指针和智能指针之间可以互相转换吗 当然可以,智能指针是类,它的构造函数有很多,其中一个就是以普通指针为唯一参数的,通过这个构造函数能实现普通指针到智能指针的转换。要注意的是,这个构造函数是explicit的,也就是说,普通指针不能隐式转换成智能指针。至于智能指针转普通指针,就更简单了,调用get函数即可。这里给出一个例子:includeinclude<;memory>;/智能指针的头文件class test{public:test(int d):data(d){}int data;};int main(){test*p=new test(10);初始化一个test对象std:shared_ptr<;test>;ptr(p);构造一个智能指针对象,普通指针转智能指针std:cout<;<; ptr->;data;智能指针的行为看起来和普通指针基本一致test*q;q=ptr.get();ptr看起来是指针,但本质是对象,它也有成员函数std:cout<;<; q->;data;return 0;}智能指针是推荐使用的东西,有了它可以减少new、delete的使用。这里只介绍它的简单操作,通常它会和make_shared搭配,而不是直接用new分配内存。

如何把普通指针转为智能指针share

c++是否应避免使用普通指针,而使用智能指针(包括shared,unique,weak)? 智能指针与普通指针

#智能指针与普通指针

随机阅读

qrcode
访问手机版