设为首页 加入收藏

TOP

C++编程丨C++11的指针(二)
2019-04-02 20:08:08 】 浏览:150
Tags:编程 指针
文章:《GotW about this in May》。Eric Niebler 在他的Meeting C++会议的笔记中也谈及了,同时移动语义会影响你应该如何在函数中传递或者返回值。


 

Eric Niebler说过,在能使用移动语义时尽可能使用移动语义。一个可选参数为例,vector::emplace_back接收一个参数,当其只是将把元素移动到适当位置,这时你应得使用移动语义。一些输出参数返回一个值,编译器可以使用移动语义或者CopyEllision(拷贝去除)的优化技术。针对一些以对象为输入/输出参数,非常引用也是可选择性优化的,但是Eric在他的笔记中指出:对象算法的状态在构造函数中应使用槽参数。

在传递常量(非常量)引用时,指针可以做同样的事情,不过有些不同,你需要对指针测试其是否为空。我个人更喜欢在函数/方法或者构造函数时传递引用而不是指针。

指针计算

之前我提到过,从我个人的观点,指针只是一个普通的变量,其值指向一个地址,或者更精确地说,是其指向值得一个地址号码。这个地址号码可以被复制,你可以对其进行加或减法操作。这常常用于遍历数组或者计算两个指针的的距离,这在使用数组时很有用。这里对数组的便利其实就是迭代器,所以,在实际代码时,指针可以代替迭代器使用。但是,从我多年C++开发经验来看,我几乎没有用到针对指针的计算操作。而且在C++中,指针的计算已经有了非常好的抽象。我的观点是,理解指针计算是重要的,这有助于理解代码中指针的具体作用。

再见,指针?

理论上,C++可以不使用指针,但是由于指针是C/C++语言的核心概念,指针本身仍然会继续存在。但是它的角色会变更,在你使用C++时,你不再需要考虑指针

。随着C++的继续发展,C++11和C++14朝着更抽象,对开发者更友好的方向发展。使用智能指针和可选类型,指针要么被封装从而更适用安全的值类型,要么完全被它们替代掉。

博主是一个有着7年工作经验的架构师,对于c++,自己有做资料的整合,一个完整学习C语言c++的路线,学习资料和工具。可以进我的Q群7418,18652领取,免费送给大家。希望你也能凭自己的努力,成为下一个优秀的程序员!另外博主的微信公众号是:C语言编程学习基地,欢迎关注!


编程开发网
首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇20分钟了解Epoll + 聊天室实战 下一篇C语言编程笔记丨SDS:一个简易动..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

array(4) { ["type"]=> int(8) ["message"]=> string(24) "Undefined variable: jobs" ["file"]=> string(32) "/mnt/wp/cppentry/do/bencandy.php" ["line"]=> int(217) }