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 name="xiaoming";
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的引用次数。
#include<iostream>
using namespace std;
int main() {
int girls = 1, boys = 4;
auto sum = [](int x, int y)->int {return x + y; };
cout << "两个数的和为:";
cout<<sum(girls, boys);
return 0;
}
|