![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
Sunnie_ge
目前从事Android驱动开发和android framework层部分.
汽车智能驾舱audio开发
展开
-
2020-10-17
C++之const类成员变量,const成员函数const修饰类的成员函数const修饰变量一般有两种方式:const T *a,或者 T const *a,这两者都是一样的,主要看const位于*的左边还是右边,这里不再赘述,主要来看一下当const修饰类的成员函数时,成员函数有什么特点。https://www.cnblogs.com/cthon/p/9166715.html类的成员函数后面加 const,表明这个函数不会对这个类对象的数据成员(准确地说是非静态数据成员)作任何改变。在设计.转载 2020-10-17 11:36:52 · 68 阅读 · 0 评论 -
C++ - 纯虚函数与抽象类
纯虚函数:没有函数体的虚函数class A{ private: int a; public: virtual void Print() = 0;//纯虚函数}抽象类:包含纯虚函数的类 只能作为基类来派生新类使用 不能创建抽象类的对象 抽象类的指针和引用 -> 由抽象类派生出来的类的对象 A a;//错,A 是抽象类,不能创建对象A *pa;//ok,可以定义抽象类的指针和引用pa = new A..转载 2020-10-10 19:05:45 · 128 阅读 · 0 评论 -
unique_ptr的使用和陷阱
分配内存与shared_ptr不同,unique_ptr没有定义类似make_shared的操作,因此只可以使用new来分配内存,并且由于unique_ptr不可拷贝和赋值,初始化unique_ptr必须使用直接初始化的方式。 unique_ptr<int> up1(new int()); //okay,直接初始化 unique_ptr<int> up2 = new int(); //error! 构造函数是explicit uni...转载 2020-09-30 17:13:07 · 592 阅读 · 0 评论 -
C++ 11 创建和使用 unique_ptr
C++ 11 创建和使用 unique_ptrunique_ptr不共享它的指针。它无法复制到其他unique_ptr,无法通过值传递到函数,也无法用于需要副本的任何标准模板库 (STL) 算法。只能移动unique_ptr。这意味着,内存资源所有权将转移到另一unique_ptr,并且原始unique_ptr不再拥有此资源。我们建议你将对象限制为由一个所有者所有,因为多个所有权会使程序逻辑变得复杂。因此,当需要智能指针用于纯 C++ 对象时,可使用unique_ptr,而当构造uniqu...转载 2020-09-30 17:07:40 · 360 阅读 · 0 评论 -
梳理c++ const 修饰函数
const是衡量一个程序员是否老道的一个标准,除了修饰变量之外,还可以修饰函数,主要有以下几种形式const int& fun(int& a); //修饰返回值int& fun(const int& a); //修饰形参int& fun(int& a) const{} //const成员函数const返回值这种多是修饰返回值是引用类型的情况下,为了避免返回值被修改的情况。解释下:返回值是引用的函数, 可以肯定的是这个引用必然不是临时对象原创 2020-09-30 16:41:02 · 4551 阅读 · 1 评论 -
std::function与std::bind使用总结
C++中函数指针的用途非常广泛,例如回调函数,接口类的设计等,但函数指针始终不太灵活,它只能指向全局或静态函数,对于类成员函数、lambda表达式或其他可调用对象就无能为力了,因此,C++11推出了std::function与std::bind这两件大杀器。std::function vs 函数指针C++函数指针相信大家用的很多了,用法最广泛的应该就是先定义函数指针的类型,然后在声明一个函数指针的变量作为另一个函数的入参,以此作为回调函数,如下列代码所示:typedef void (*Prin转载 2020-09-23 19:59:51 · 244 阅读 · 0 评论 -
C++ 之std::function()及 std::bind() 学习总结
1. std::function介绍类模版std::function是一种通用、多态的函数封装。std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,这些目标实体包括普通函数、Lambda表达式、函数指针、以及其它函数对象等。std::function对象是对C++中现有的可调用实体的一种类型安全的包裹(我们知道像函数指针这类可调用实体,是类型不安全的)。通常std::function是一个函数对象类,它包装其它任意的函数对象,被包装的函数对象具有类型为T1, …,转载 2020-09-23 19:07:32 · 180 阅读 · 0 评论 -
C++11 shared_ptr(智能指针)详解
要确保用 new 动态分配的内存空间在程序的各条执行路径都能被释放是一件麻烦的事情。C++11 模板库的 <memory> 头文件中定义的智能指针,即 shared _ptr 模板,就是用来部分解决这个问题的。只要将 new 运算符返回的指针 p 交给一个 shared_ptr 对象“托管”,就不必担心在哪里写delete p语句——实际上根本不需要编写这条语句,托管 p 的 shared_ptr 对象在消亡时会自动执行delete p。而且,该 shared_ptr 对象能像指针 p —样.转载 2020-09-21 23:24:08 · 245 阅读 · 0 评论 -
C++11 make_shared
make_shared的使用:shared_ptr<string> p1 = make_shared<string>(10, '9'); shared_ptr<string> p2 = make_shared<string>("hello"); shared_ptr<string> p3 = make_shared<string>(); 尽量使用make_shared初始化C++11 中引入了智能.转载 2020-09-21 23:23:11 · 520 阅读 · 0 评论 -
厘清C++类型转换(static_cast,dynamic_cast,reinterpret_cast,const_cast
C++是一门弱类型的语言,提供了许多复杂和灵巧类型转换的方式。笔者之前写的Python与Go都是强类型的语言,对这种弱类型的设计实在是接受无力啊( 生活所迫,工作还得写C++啊)C++语言提供了四种类型转换的操作:static_cast,dynamic_cast,reinterpret_cast,const_cast,今天就来聊一聊,在C++之中应该如何来使用这些类型转换的。1.旧式类型转换开门见山,先聊聊笔者对类型转换的看法吧。从设计上看,一门面向对象的语言是不一样提供类型转换的,这种方式破..转载 2020-09-15 12:36:31 · 107 阅读 · 0 评论 -
C++11 之 override
C++11 之 override作用在成员函数声明或定义中, override 确保该函数为虚函数并覆写来自基类的虚函数。位置:函数调用运算符之后,函数体或纯虚函数标识 “= 0” 之前。不使用override#include <iostream>using namespace std;class Base{public: virtual void foo() { cout << "Base::foo" << endl; } virtua转载 2020-08-26 12:33:24 · 184 阅读 · 0 评论 -
c++中lambda表达式的用法
1.基础用法c++11提供了对匿名函数的支持,称为Lambda函数(也叫Lambda表达式)。Lambda表达式把函数看作对象。Lambda表达式可以像对象一样使用,比如将它们赋给变量和作为参数传递,还可以像函数一样对其求值。Lambda表达式本质上与函数声明非常类似。Lambda表达式具体形式如下:[capture](parameters)mutable->return-type{}1.[capture]:捕捉列表,总是出现在Lambda函数的开始出,实际上,[]是Lambda引出符。编译器原创 2020-08-18 17:50:05 · 271 阅读 · 0 评论 -
c++ 匿名空间
当定义一个命名空间时,可以忽略这个命名空间的名称: namespce {char c; int i;double d; } 编译器在内部会为这个命名空间生成一个唯一的名字,而且还会为这个匿名的命名空间生成一条using指令。所以上面的代码在效果上等同于: namespace __UNIQUE_NAME_ {char c; int i; ...原创 2020-08-18 12:45:12 · 962 阅读 · 0 评论 -
C++中继承及virtual小结
一、继承基础知识C++中的继承1.1继承的基本概念类与类之间的关系has-A,包含关系,用以描述一个类由多个“部件类”构成,实现has-A关系用类的成员属性表示,即一个类的成员属性是另一个已经定义好的类。use-A,一个类使用另一个类,通过类之间的成员函数相互联系,定义友元或者通过传递参数的方式来实现。(和组合不同)is-A,即继承关系,关系具有传递性。继承的特点子类拥有...转载 2018-12-15 11:26:10 · 555 阅读 · 0 评论 -
C++ 类模板
转载: https://www.jianshu.com/p/70ca94872418C++中有一个重要特性,那就是模板类型。类似于Objective-C中的泛型。C++通过类模板来实现泛型支持。1 基础的类模板类模板,可以定义相同的操作,拥有不同数据类型的成员属性。通常使用template来声明。告诉编译器,碰到T不要报错,表示一种泛型.如下,声明一个普通的类模板:tem...转载 2018-11-21 18:34:04 · 208 阅读 · 0 评论 -
C++类中this指针的理解
转自: https://www.cnblogs.com/liushui-sky/p/5802981.html 先要理解class的意思。class应该理解为一种类型,象int,char一样,是用户自定义的类型。用这个类型可以来声明一个变量,比如int x, myclass my等等。这样就像变量x具有int类型一样,变量my具有myclass类型。理解了这个,就好解释this了,my里的this ...转载 2018-05-26 17:39:44 · 242 阅读 · 0 评论 -
[C++]友元
C++中的友元既可以实现友元函数,也可以实现友元类.C++的友元类的所有方法都可以访问原始类的私有成员和保护成员。也可以做更加严格的限制,只有特定的成员函数指定为另一个类的友元,即友元类#include <iostream> #include <cstring> using namespace std ; //声明教师类 class Techer ; /...原创 2018-05-26 15:52:49 · 137 阅读 · 0 评论