随笔分类 -  C++

摘要:设置一秒等待时间,若超时 std::cout << status.error_code() << ": " << status.error_message()<< std::endl; // 4: Deadline Exceeded 状态码: OK(0):成功 操作成功完成 CANCELLED(1) 阅读全文
posted @ 2022-10-02 15:57 补码 阅读(869) 评论(0) 推荐(0)
摘要:成员函数引用限定可以区分成员函数被哪种对象(左值或右值对象)调用。例子如下: class A { public: void text()& { cout<<"左值引用\n"; } void text()&& { cout<<"右值引用\n"; } }; int main(){ A a; a.text 阅读全文
posted @ 2022-07-21 13:39 补码 阅读(81) 评论(0) 推荐(0)
摘要:需要用到 while 来判断另一个线程中bool block 的值来做堵塞,代码如下: while(block); // 堵塞线程,直到block变为false // do something Debug版本下是堵塞成功的,Release版本就不行了,直接优化掉了,也不可能说直接把优化降级,最后发现 阅读全文
posted @ 2022-05-22 20:26 补码 阅读(280) 评论(0) 推荐(0)
摘要:typedef enum memory_order { memory_order_relaxed, // 不对顺序做任何保证 memory_order_consume, // 标记读操作,本线程中,依赖于该值的读写不能重排到此操作前 memory_order_acquire, // 标记读操作,本线 阅读全文
posted @ 2022-02-26 14:56 补码 阅读(192) 评论(0) 推荐(0)
摘要:// 方法一template<typename T> int arr_length(T(&arr) ) { return sizeof(arr) / sizeof(arr[0]); } // 方法二 template<typenameT, int N> int arr_length(T(&arr)[ 阅读全文
posted @ 2022-02-23 12:48 补码 阅读(351) 评论(0) 推荐(1)
摘要:#include <chrono>#include <iomanip>#include <iostream> std::chrono::system_clock::time_point t = std::chrono::system_clock::now(); std::time_t c = std 阅读全文
posted @ 2022-02-22 20:51 补码 阅读(2829) 评论(0) 推荐(1)
摘要:std::counting_semaphore 具体内容看std::counting_semaphore, std::binary_semaphore - C++中文 - API参考文档 (apiref.com)。感觉使用方法和 std::condition_variable 差不多,有时间再看看源 阅读全文
posted @ 2022-02-22 12:36 补码 阅读(1505) 评论(1) 推荐(0)
摘要:官方代码如下 #include <iostream> #include <chrono> #include <ratio> #include <thread> void f() { std::this_thread::sleep_for(std::chrono::seconds(1)); } int 阅读全文
posted @ 2022-02-16 17:05 补码 阅读(108) 评论(0) 推荐(0)
摘要:std::condition_variable 和 std::condition_variable_any 都用于线程同步,前者只能与 std::unique_lock 配合,后者是前者泛化,可以和任何 lock 配合。线程同步是指线程间需要按照预定的先后次序顺序进行的行为。 综合运用std::mu 阅读全文
posted @ 2022-02-16 13:10 补码 阅读(174) 评论(0) 推荐(0)
摘要:修饰字面常量: const int getval(void) { return 100; } 该函数返回值 const 可有可无。 修饰指针: const int* getptr(void) { int *p = (int *)0xCC; return p; } int main() { const 阅读全文
posted @ 2022-01-19 14:52 补码 阅读(625) 评论(0) 推荐(0)
摘要:一、成员初始化列表作用 成员初始化列表作用: 让const或引用变量能够初始化 提高构造函数效率 对内置类型(int,bool,char等等)使用无法提高效率。 第一、三点略过不讲,来直接看第二点,先上代码 1 class A 2 { 3 public: 4 A(int i = 0) :m_i(i) 阅读全文
posted @ 2022-01-05 16:28 补码 阅读(726) 评论(0) 推荐(1)
摘要:C++支持多重继承,若如图所示,BC继承于A,D继承于BC。 若BC继承于A属于public,当创建D时,会创建2个A和1个BCD。当D调用A的成员函数(包括虚函数)时,会产生二义性,不知道应该调用哪个A。 1 class A 2 { 3 public: 4 A() { cout << "const 阅读全文
posted @ 2022-01-04 11:24 补码 阅读(247) 评论(0) 推荐(0)
摘要:搞懂了c++创始人写的<the design and evolution of cpp>中的下面这个例子, 有助于你理解typdef: typedef int P(); typedef int Q(); class X { static P(Q); // 等价于`static int Q()`, Q 阅读全文
posted @ 2021-12-29 22:58 补码 阅读(901) 评论(0) 推荐(0)
摘要:答案是可以的。 一个non-virtual 函数被定义为private时,它只能被该类的成员函数或友元函数所访问。而virtual修饰符则强调父类的成员函数可以在子类中被重写,而virtual修饰符则强调父类的成员函数可以在子类中被重写,因为重写之时并没有与父类发生任何的调用关系,故而重写是被允许的 阅读全文
posted @ 2021-12-29 21:41 补码 阅读(1226) 评论(0) 推荐(2)
摘要:1、类被标记为final,禁止被继承 class base final {}; class derived: public base // 报错,不能将"final"类型作为基类 {}; 2、虚函数(函数必须是虚函数)被标记final,禁止被 override class base { virtua 阅读全文
posted @ 2021-12-28 18:08 补码 阅读(365) 评论(0) 推荐(0)
摘要:众所周知,子类虚函数指针会把父类虚函数指针覆盖,如果要子类调用父类虚函数,方法如下 1 class Father 2 { 3 virtual void show(){cout<<"this is father."<<endl;} 4 }; 5 6 class Son 7 { 8 virtual vo 阅读全文
posted @ 2021-12-27 22:41 补码 阅读(4673) 评论(0) 推荐(0)
摘要:引用成员变量和const成员变量初始化只能通过成员初始化列表初始化。引用成员变量地址会变为对应初始化变量的地址。 引用成员变量和const成员变量在class中定义未声明时,和普通成员变量是一样的,对象通过成员初始化列表后,或者进入构造函数内部代码块那一刻,才会赋予引用和const的职能 普通成员变 阅读全文
posted @ 2021-12-11 01:05 补码 阅读(494) 评论(0) 推荐(0)
摘要:template<typename T> class blob { public: blob(); blob(const T &j):i(j){} static void showText(){qDebug()<<"text";} }; int main() { blob::showText(); 阅读全文
posted @ 2021-11-25 14:23 补码 阅读(439) 评论(0) 推荐(0)
摘要:修改CMakeLists.txt文件后,删掉之前构建的项目文件,再次执行CMake,错误解决。 阅读全文
posted @ 2021-11-18 18:51 补码 阅读(5679) 评论(1) 推荐(0)
摘要:argc:表示argv数组中字符串的数量 argv:char类型数组,保存可执行文件位置(window后缀为exe) 阅读全文
posted @ 2021-11-16 16:06 补码 阅读(612) 评论(0) 推荐(0)