随笔分类 -  【01】C++

摘要:string流输入输出 #include <iostream> #include <streambuf> #include <fstream> #include <vector> #include <string> #include <cstring> #include <memory> // 自定 阅读全文
posted @ 2020-10-13 22:08 苏格拉底的落泪 阅读(451) 评论(0) 推荐(0)
摘要:std::forward 完美转发 1. std::forward代码原型: template <class T> T&& forward(typename remove_reference<T>::type& t) noexcept { return static_cast<T&&>(t); } 阅读全文
posted @ 2020-09-06 20:48 苏格拉底的落泪 阅读(579) 评论(0) 推荐(0)
摘要:内存分配方式 一、分配方式简介 在C++中,内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈:在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 堆:就 阅读全文
posted @ 2019-05-08 21:26 苏格拉底的落泪 阅读(361) 评论(0) 推荐(0)
摘要:Part II:vmware虚拟机安装centos7操作系统教程 参考资料 阅读全文
posted @ 2019-04-04 13:33 苏格拉底的落泪 阅读(181) 评论(0) 推荐(0)
摘要:继承的构造函数 子类为完成基类初始化,在C++11之前,需要在初始化列表调用基类的构造函数,从而完成构造函数的传递。如果基类拥有多个构造函数,那么子类也需要实现多个与基类构造函数对应的构造函数。 struct Base { Base(int x) { std::cout << "Base(" << 阅读全文
posted @ 2019-03-13 14:40 苏格拉底的落泪 阅读(718) 评论(0) 推荐(0)
摘要:protected 和 private修饰的构造函数:连接 1. 在类的外部创建对象时,不能调用protected或private修饰的构造函数。 2.当子类中的构造函数调用父类的private构造函数时会错,当子类中的构造函数调用父类中的 public或protected构造函数时是对的 1 #i 阅读全文
posted @ 2019-03-12 17:18 苏格拉底的落泪 阅读(375) 评论(0) 推荐(0)
摘要:使用lambda创建线程 1. 例子: #include <iostream> #include <thread> #include <chrono> #include <vector> #include <mutex> #include <memory> class Task { public: 阅读全文
posted @ 2019-01-13 19:51 苏格拉底的落泪 阅读(657) 评论(0) 推荐(0)
摘要:std::piecewise_construct 值得注意的是 map 类型的 emplace 处理比较特殊,因为和其他的容器不同,map 的 emplace 方法把它接收到的所有的参数都一起转发给 pair 的构造函数。但是对于一个 pair 来说,它既需要构造它的 key 又需要构造它的 val 阅读全文
posted @ 2019-01-08 22:20 苏格拉底的落泪 阅读(848) 评论(0) 推荐(0)
摘要:泛型算法 1. 例子: #include<iostream> #include<algorithm> #include<vector> #include<string> #include<fstream> using namespace std; void elimDups(vector<strin 阅读全文
posted @ 2018-10-10 15:11 苏格拉底的落泪 阅读(241) 评论(0) 推荐(0)
摘要:模板嵌套 1.模板模板参数:允许将一个“模板”作为另一个模板的参数传入。 template<template<typename> class Container, typename T> class Wrapper { public: Container<T> data; }; 使用示例: Wrap 阅读全文
posted @ 2018-09-12 20:52 苏格拉底的落泪 阅读(162) 评论(0) 推荐(0)
摘要:默认构造函数的构造操作、拷贝构造函数额构造操作 注意:默认构造函数和拷贝构造函数在必要时的时候由编译器产生出来。 参考资料 关于默认构造函数的几个错误认识(四种情况下,编译器会生成默认构造函数) 阅读全文
posted @ 2018-09-02 21:07 苏格拉底的落泪 阅读(279) 评论(0) 推荐(0)
摘要:嵌套类 例子: #include <iostream> using namespace std; class c1 { public: int a; void foo(); class c2 { public: int a; void foo(); } b; }; void c1::foo() { 阅读全文
posted @ 2018-08-27 17:47 苏格拉底的落泪 阅读(209) 评论(0) 推荐(0)
摘要:运行类型识别 一、使用RTTI dynamic_cast运算符的调用形式如下所示: dynamic_cast<type*>(e) //e是指针 dynamic_cast<type&>(e) //e是左值 dynamic_cast<type&&>(e) //e是右值 e能成功转换为type*类型的情况 阅读全文
posted @ 2018-08-25 21:28 苏格拉底的落泪 阅读(214) 评论(0) 推荐(0)
摘要:钻石型多重虚继承 钻石型-重复继承的源代码如下所示。其中,每个类都有两个变量,一个是整形(4字节),一个是字符(1字节): class B { public: int ib; char cb; public: B() :ib(0), cb('B') {} virtual void f() { cou 阅读全文
posted @ 2018-08-12 21:14 苏格拉底的落泪 阅读(543) 评论(0) 推荐(0)
摘要:合成拷贝控制与继承 1. 例子 #include <iostream> using namespace std; class Base { public: Base() { cout << "Base contruction" << endl; } virtual ~Base() { cout << 阅读全文
posted @ 2018-08-02 10:49 苏格拉底的落泪 阅读(475) 评论(0) 推荐(0)
摘要:链接 类里的static cosnt 和 const static成员初始化 这两种写法的作用一样,为了便于记忆,在此值说明一种通用的初始化方法: class Test { public: static const int mask1; const static int mask2; }; cons 阅读全文
posted @ 2018-07-31 12:52 苏格拉底的落泪 阅读(124) 评论(0) 推荐(0)
摘要:重载new和delete 1. 测试代码: 1 #include<iostream> 2 #include<new> 3 using namespace std; 4 class A { 5 public: 6 A() { cout << "A constructor" << endl; } 7 8 阅读全文
posted @ 2018-07-27 19:22 苏格拉底的落泪 阅读(321) 评论(0) 推荐(0)
摘要:模板实参推断 一、模板函数显示实参 情况1: template <typename T1, typename T2, typename T3> T1 sum(T2 a, T3 b) { return a + b; } 分析:调用的时候就需要指定T1的类型,如:sum<float>(1, 2); 于是 阅读全文
posted @ 2018-07-27 09:52 苏格拉底的落泪 阅读(215) 评论(0) 推荐(0)
摘要:虚基类 一、虚基类介绍 多继承时很容易产生命名冲突,即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字,命名冲突依然有可能发生,比如非常经典的菱形继承层次。如下图所示: 类A派生出类B和类C,类D继承自类B和类C,这个时候类A中的成员变量和成员函数继承到类D中变成了两份,一份来自 A- 阅读全文
posted @ 2018-06-22 22:26 苏格拉底的落泪 阅读(2474) 评论(0) 推荐(1)
摘要:学习资料 • 派生类的赋值运算符/赋值构造函数也必须处理它的基类成员的赋值 • C++ 基类构造函数带参数的继承方式及派生类的初始化 定义拷贝构造函数 【注意】对派生类进行拷贝构造时,如果想让基类的成员也同时拷贝,就一定要在派生类拷贝构造函数初始化列表中显示调用基类拷贝构造函数(当然在函数体内将基类 阅读全文
posted @ 2018-06-22 20:05 苏格拉底的落泪 阅读(2345) 评论(1) 推荐(0)