C++语法或者关键字理解
文章平均质量分 88
凡事要上心
这个作者很懒,什么都没留下…
展开
-
虚函数表:基类的构造函数声明不能为virtual,而基类析构函数一般设置为virtual
1、引子:虚函数表和虚函数指针先回顾一下,虚函数表和虚函数指针是什么?我们知道C++为每一个包含虚函数的类维护一个虚函数表,每个对应的类对象都有一个隐式的虚函数表指针vptr先看一个例子:假设我们有一个基类Base,有成员函数f(), g(), h() 。其中f()和g()是虚函数(当然这里可以定义为纯虚函数,但这样就不能生成类对象了),h()为非虚成员函数。class Base{public: virtual void f(){}//虚函数 virtual void原创 2021-03-10 10:15:43 · 905 阅读 · 2 评论 -
C++多线程thread用法
1、多线程相关的类C++11 新标准中引入了五个头文件来支持多线程编程,他们分别是<atomic> ,<thread>,<mutex>,<condition_variable>和<future>。<atomic>:该头文主要声明了两个类, std::atomic 和 std::atomic_flag,另外还声明了一套 C 风格的原子类型和与 C 兼容的原子操作的函数。<thread>:该头文件主要声明了 std::t原创 2021-01-23 18:02:09 · 6015 阅读 · 0 评论 -
类的static成员咋用?和普通成员变量之间怎么访问?
1、记录原因之前一直捋不清普通成员和静态成员之间怎么访问,经常忘记,最近学习设计模式的单例模式时,顺便重温《C++ Primer》static关键字,有了一些新的理解,可能不完全正确,如果有误,望读者提出。2、C++ primer上的介绍我们通过再成员声明之前3、重点4、总结...原创 2021-01-15 16:49:15 · 3622 阅读 · 0 评论 -
C++11标准:Lambda表达式讲解
1、定义解析 Lambda表达式,顾名思义,它是一个表达式,和常规函数表达式不同的是它是“匿名”的,也就是没有函数名的表达式(简称匿名表达式)。2、Lambda的一般表达形式capture list :捕获列表,是lambda所在的函数中定义的局部变量的列表(通常为空)parameter list:参数列表return type:返回类型function body:函数体说明:(1)外观来看,和普通函数类似的是,Lambda表达式具有一个返回类型,一个参数列表...原创 2021-01-15 08:56:40 · 263 阅读 · 0 评论 -
C++ STL中Map的按Key排序和按Value排序
map是用来存放<key, value>键值对的数据结构,可以很方便快速的根据key查到相应的value。假如存储学生和其成绩(假定不存在重名,当然可以对重名加以区分),我们用map来进行存储就是个不错的选择。 我们这样定义,map<string, int>,其中学生姓名用string类型,作为Key;该学生的成绩用int类型,作为value。这样一来,我们可以根据学生姓名快速的查找到他的成绩。 但是,我们除了希望能够查询某个学生的成绩,或许还想看看整体的情况。我们...转载 2021-01-25 11:17:19 · 633 阅读 · 0 评论 -
C++——析构函数什么时候被调用
1、对象生命周期结束,被销毁时2、delete指向对象的指针时,或delete指向对象的基类类型指针,而其基类虚构函数是虚函数时;3.对象A是对象B的成员,B的析构函数被调用时,对象A的析构函数也被调用。 举例来说:class A{public: A() {ma = new int(1000);} A(size sz) {ma = new int(sz);} virtual ~A() { delete ma;} in...原创 2020-09-07 10:25:29 · 9692 阅读 · 2 评论