![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
我是小将
Make your hands dirty!
展开
-
C++虚函数
C++虚函数C++虚函数是多态性实现的重要方式,当某个虚函数通过指针或者引用调用时,编译器产生的代码直到运行时才能确定到底调用哪个版本的函数。被调用的函数是与绑定到指针或者引用上的对象的动态类型相匹配的那个。因此,借助虚函数,我们可以实现多态性。这也是OOP的核心思想之一。引言考虑下面一个继承的例子,Dog类与Cat类都继承自Animal类,但是它们拥有不同的speak()方法:class Anim原创 2017-04-08 19:11:02 · 505 阅读 · 0 评论 -
C++类型推断
C++类型推断对于静态语言来说,你一般要明确告诉编译器变量或者表达式的类型。但是庆幸地是,现在C++已经引入了自动类型推断:编译器可以自动推断出类型。在C++11之前,类型推断只是用在模板上。而C++11通过引入两个关键字auto和decltype扩展了类型推断的应用。C++14更进一步扩展了auto和decltype的应用范围。明显地,类型推断可以减少很多无必要的工作。但是高兴之余,你仍然有可能会原创 2017-04-09 21:34:29 · 1275 阅读 · 0 评论 -
C++右值引用
C++右值引用右值引用应该是C++11引入的一个非常重要的技术,因为它是移动语义(Move semantics)与完美转发(Perfect forwarding)的基石:移动语义:将内存的所有权从一个对象转移到另外一个对象,高效的移动用来替换效率低下的复制,对象的移动语义需要实现移动构造函数(move constructor)和移动赋值运算符(move asssignment operator)。原创 2017-04-12 13:13:17 · 859 阅读 · 0 评论 -
C++可变参数模板
可变参数模板普通模板只可以采取固定数量的模板参数。然而,有时候我们希望模板可以接收任意数量的模板参数,这个时候可以采用可变参数模板。对于可变参数模板,其将包含至少一个模板参数包,模板参数包是可以接收0个或者多个参数的模板参数。相应地,存在函数参数包,意味着这个函数参数可以接收任意数量的参数。使用规则一个可变参数类模板定义如下:template<typename ... Types>class Tu原创 2017-04-04 16:22:32 · 10071 阅读 · 0 评论 -
C++智能指针
C++智能指针内存管理是C++中的一个常见的错误和bug来源。在大部分情形中,这些bug来自动态分配内存和指针的使用:当多次释放动态分配的内存时,可能会导致内存损坏或者致命的运行时错误;当忘记释放动态分配的内存时,会导致内存泄露。所以,我们需要智能指针来帮助我们管理动态分配的内存。其来源于一个事实:栈比堆要安全的多,因为栈上的变量离开作用域后,会自动销毁并清理。原创 2017-04-05 11:29:12 · 845 阅读 · 0 评论 -
C++ lambda表达式与函数对象
C++ lambda表达式与函数对象lambda表达式是C++11中引入的一项新技术,利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象,并且使代码更可读。但是从本质上来将,lambda表达式只是一种语法糖,因为所有其能完成的工作都可以用其它稍微复杂的代码来实现。但是它简便的语法却给C++带来了深远的影响。如果从广义上说,lamdba表达式产生的是函数对象。在类中,可以重载函原创 2017-04-15 11:35:34 · 3452 阅读 · 1 评论 -
CUDA编程入门极简教程
码字不易,欢迎给个赞!欢迎交流与转载,文章会同步发布在公众号:机器学习算法全栈工程师(Jeemy110)目录目录前言CUDA编程模型基础向量加法实例矩阵乘法实例小结参考资料前言2006年,NVIDIA公司发布了CUDA,CUDA是建立在NVIDIA的CPUs上的一个通用并行计算平台和编程模型,基于CUDA编程可以利用GPUs的并行计算引擎...原创 2018-03-18 13:29:44 · 95436 阅读 · 27 评论