1.概述
c++ 语言有有是十多年没有更新了,c++ 11出来后,使得c++这门语言多了很多特性,auto的出现、智能指针、多线程、lambda函数等。这些特性的出现使得c++这门语言的代码看起来更加的便捷和简单。
2 auto类型
auto类型的出现使得定义变量的时候更加方便。Python语言之所以最近比较火,是因为其语言的简便性、易学性。比如,Python语言中,变量是从来不用申明的。
a=1 name='xiaoming'
当时写python代码时就觉得很方便,时常在想,什么时候c++语言可以这么方便就好了。当学习C++11的时候,了解了auto类型,总算可以随心所欲的定义,不用考虑int ,float,double之类的。
auto a=1;//auto自动将a转换为int类型。
auto name="xiaoming";//auto自动将name转化为string字符串。
3.智能指针
c++之所以不收很多人欢迎,是因为使用指针可能带来的一系列问题,内存泄漏、悬浮指针等。智能指针的出现,就避免了这些问题。智能指针,主要有三种指针,unique_ptr、shared_ptr、weak_ptr。
3.1unique_ptr
当使用unique_ptr的时候,指针指向的对象不能被其他指针共享了,即不能拷贝了。
unique_ptr<int> up1(new int(11));
unique_ptr<int> up2=up1;//这里会报错。编译通过不了。
但是,可以通过move函数进行转移,当move函数转移之后,原来的指针会失去对象空间的所有权。
3.2shared_ptr和weak_ptr
shared_ptr指针可以与其他指针共享对象内存空间,其原理是,采用引用计数,每当一个shared指针指向对象内存时,计数就加1,每当对象内存的指针释放一个,计数就减1,直到0,就释放对象空间。
weak_ptr指针可以通过lock函数指向shared_ptr指针的对象空间,看是weak_ptr指针不会影响shared_ptr的引用次数。
//因为字数限制,没有放全部代码,少了Checkptr()函数定义和头文件
int main() {
shared_ptr<int> sp1(new int(666));
shared_ptr<int> sp2;
sp2 = sp1;
weak_ptr<int> wp = sp1;
cout << *sp1 << endl;
cout << *sp2 << endl;
Checkptr(wp);
sp1.reset();
cout << *sp2 << endl;
Checkptr(wp);
sp2.reset();
Checkptr(wp);
return 0;
}
下一篇:https://blog.csdn.net/zuimman/article/details/121538039?spm=1001.2014.3001.5501