一、基本概念 1、互斥量(mutex) 互斥量:是个类对象(可以理解为一把锁),多个线程尝试用lock()成员函数来加锁这把锁,只有一个线程能锁定成功(成功的标志是lock()函数能够返回,返回不了说明没有锁成功) 2、死锁 死锁:一般是两个或两个以上的互斥量,在两个或多个地方上锁的顺序不一致导致的 ...
分类:
编程语言 时间:
2020-06-25 17:29:08
阅读次数:
69
概念 如果两个或者两个以上的类具有相同的特征【属性】和行为【成员函数】,我们可以抽取一个类出来,在抽取出来的类中声明公共的部分 被抽取出来的类:父类,超类,基类 两个或者两个以上的类:子类,派生类 他们之间的关系:子类继承自父类 父类派生出子类 作用:简化代码,提高了代码的复用性和可维护性 继承的特 ...
分类:
编程语言 时间:
2020-06-24 16:06:42
阅读次数:
53
构造函数是特殊的成员函数 在冒号和花括号之间的代码称为构造函数的初始化列表 如果没有为一个类显式定义任何构造函数,编译器将自动为这个类生成默认构造函数 const 成员函数不能修改调用该函数的对象,只能读取而不能修改调用它们的对象的数据成员why?const成员函数的this指针被隐含地修改为con ...
分类:
其他好文 时间:
2020-06-24 13:42:20
阅读次数:
62
假定将单例模式限定为不是全用静态函数实现。1、使用的方便性:如果需要初始化工作,单例模式可以在构造函数里面完成,全静态函数的类需要一个额外的函数来完成初始化工作,而且使用者如果没有调用 initialize 函数,那么后续的操作就会有问题。而构造函数会被默认调用,所以使用起来比较简单,对使用者做出了 ...
分类:
其他好文 时间:
2020-06-22 17:24:52
阅读次数:
70
——派生类需要自己的构造函数。 派生类可以根据需要添加额外的数据成员和成员函数。 class RatedPlayer : public TableTennisPlayer { private: unsigned int rating; // add a data member public: Rat ...
分类:
编程语言 时间:
2020-06-21 16:12:04
阅读次数:
52
cpp 类的内存结构 说明: 虚表指针总是存在在类的头部,并按类的继承顺序排放。一个子类可以有多个虚表指针。 虚成员函数总是按照声明顺序存在于虚表中。 如果存在同名函数,子类虚函数会覆盖每一个父类的每一个同名虚函数。 子类独有的虚函数填入第一个虚函数表中,且用父类指针是不能调用。 父类独有的虚函数不 ...
分类:
其他好文 时间:
2020-06-18 11:12:09
阅读次数:
76
缺省构造函数 缺省拷贝构造函数 缺省析构函数 缺省赋值运算符 缺省取地址运算符 缺省取地址运算符const *注:只有当实际使用这些函数的时候,编译器才会去定义它们。 摘自:https://blog.csdn.net/BostonRayAlen/article/details/93041395 ...
分类:
编程语言 时间:
2020-06-18 10:35:09
阅读次数:
55
多继承(Multiple Inheritance)是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员。尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名冲突就是不可回避的一个。多继承时很容易产生命名冲突,即使我们很小心地将所有类中的成员变量和成员函数都 ...
分类:
编程语言 时间:
2020-06-15 17:45:15
阅读次数:
61
重载+或-运算符 重载方式有两种,一种是全局函数的方式,另外一种是成员函数的方式。 全局函数 class MyClass { public: int x; int y; MyClass(int x,int y); ~MyClass();void print() { cout << "x = " << ...
分类:
编程语言 时间:
2020-06-15 14:17:22
阅读次数:
59
C++中函数指针的用途非常广泛,例如回调函数,接口类的设计等,但函数指针始终不太灵活,它只能指向全局或静态函数,对于类成员函数、lambda表达式或其他可调用对象就无能为力了,因此,C++11推出了std::function与std::bind这两件大杀器。 std::function vs 函数指 ...
分类:
其他好文 时间:
2020-06-14 20:33:58
阅读次数:
93