c++
文章平均质量分 84
商汤科技
这个作者很懒,什么都没留下…
展开
-
C++抽象类和接口类
C++中的接口和抽象类常常令人困惑。与Java或C#等其他编程语言不一样,C++中没有定义接口和抽象类的关键字。但是,也可以像其他语言一样,在C++中使用接口和抽象类。当试图创建一个功能的多个版本时,当创建的对象之间存在某种关系时,我们使用抽象类。在了解如何定义抽象类和接口之前,让我们先了解在C++中什么是虚方法和纯虚方法。当实现的功能彼此不相关时,创建的每个对象都是独立的,我们使用接口。:是一种不需要定义而只需要声明的虚方法,它是通过在方法最后添加。首先,我们来比较接口和抽象类的概念。转载 2023-09-04 22:46:39 · 226 阅读 · 0 评论 -
Base64编码和其在图片的传输的应用
base64编码转载 2022-11-02 19:53:44 · 1052 阅读 · 0 评论 -
一文读懂C++右值引用和std::move
作者:rickonji 冀铭哲C++11引入了右值引用,有一定的理解成本,工作中发现不少同事对右值引用理解不深,认为右值引用性能更高等等。本文从实用角度出发,用尽量通俗易懂的语言讲清左右值引用的原理,性能分析及其应用场景,帮助大家在日常编程中用好右值引用和std::move。1. 什么是左值、右值首先不考虑引用以减少干扰,可以从2个角度判断:左值可以取地址、位于等号左边;而右值没法取地址,位于等号右边。int a = 5;a可以通过 & 取地址,位于等号左边,所以a是左值。转载 2022-05-09 01:05:46 · 438 阅读 · 0 评论 -
c++ 左值引用与右值引用
左值引用先看一下传统的左值引用。int a = 10;int &b = a; // 定义一个左值引用变量b = 20; // 通过左值引用修改引用内存的值左值引用在汇编层面其实和普通的指针是一样的;定义引用变量必须初始化,因为引用其实就是一个别名,需要告诉编译器定义的是谁的引用。int &var = 10;上述代码是无法编译通过的,因为10无法进行取地址操作,无法对一个立即数取地址,因为立即数并没有在内存中存储,而是存储在寄存器中,可以通过下述方法解决转载 2021-08-13 00:35:42 · 340 阅读 · 0 评论 -
C++11特性:decltype关键字
decltype简介我们之前使用的typeid运算符来查询一个变量的类型,这种类型查询在运行时进行。RTTI机制为每一个类型产生一个type_info类型的数据,而typeid查询返回的变量相应type_info数据,通过name成员函数返回类型的名称。同时在C++11中typeid还提供了hash_code这个成员函数,用于返回类型的唯一哈希值。RTTI会导致运行时效率降低,且在泛型编程中,我们更需要的是编译时就要确定类型,RTTI并无法满足这样的要求。编译时类型推导的出现正是为了泛型编程,在非泛型编转载 2021-07-30 01:00:52 · 252 阅读 · 0 评论 -
C++ delete 和 delete []的区别
delete 释放new分配的单个对象指针指向的内存delete[] 释放new分配的对象数组指针指向的内存那么,按照教科书的理解,我们看下下面的代码:int *a = new int[10];delete a; //方式1delete [] a; //方式2肯定会有很多人说方式1肯定存在内存泄漏,是这样吗?(1). 针对简单类型 使用new分配后的不管是数组还是非数组形式内存空间用两种方式均可 如:int *a = new int[10];delete a转载 2021-07-28 11:42:58 · 322 阅读 · 0 评论 -
C++动态绑定原理
C++ 多态一般我们问到c++的三大特性是什么?我们基本都知道封装,继承,多态,进一步问什么是多态?我们也能够回答说多态是通过虚函数实现的,是一种通过动态绑定实现对不同的类调用不同的函数接口,等等。。但是再继续问,什么是动态绑定,虚函数怎么实现的,等等,基本上不经常用c++的,就回答不出来了。继承和多态的作用:继承对程序编写的作用在于我们可以更容易的定义和其它类相似,但是不相同的新类而多态的作用在于我们可以通过动态绑定,在使用这些类进行编写程序时,可以一定程度上忽略其区别。虚函数:c转载 2021-07-22 00:55:51 · 1129 阅读 · 0 评论