c++ 11学习心得(一)

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值