摘要: 今天设计一个类时,根据需求在网上学到了单例模式,重新梳理了private构造析构函数的作用。 构造函数和析构函数 private 私有成员只能在类域内被访问,不能在类域外进行访问。 无论将构造函数还是虚构函数设置为private,都可以防止外部创建栈对象,而只能由类的成员函数创建(实际上只能由类的静 阅读全文
posted @ 2024-02-28 14:01 trashwin 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 起因是做gitlet读取文件内容时遇到的内容不匹配错误,后来发现是自己读取文件内容时均使用getline函数,写回时读入的每个字符串都加上换行符,导致文件末尾可能多出换行符。 于是改成了 vector<string> Blob::readContentsForBlob(const string& f 阅读全文
posted @ 2024-02-25 15:47 trashwin 阅读(82) 评论(0) 推荐(0) 编辑
摘要: 鉴于git命令总是忘记,在此稍微记录一下 git命令 创建仓库 git init 初始化本地仓库 git clone url 克隆远程仓库 配置仓库 查看全部配置 git config --list 常用修改用户和邮箱 本仓库配置 git config user.name "your-usernam 阅读全文
posted @ 2024-02-24 00:21 trashwin 阅读(6) 评论(0) 推荐(0) 编辑
摘要: std::thread thread() noexcept 创建一个空线程对象,什么也不做 template <class Fn, class… Args> explicit thread(Fn&& fn, Args&&… args) 创建线程,以 fn(args…) 作为线程函数执行 Fn 必须是 阅读全文
posted @ 2024-02-08 23:36 trashwin 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 右值 每个 C++ 表达式都有一个类型,属于值类别。 值类别是编译器在表达式计算期间创建、复制和移动临时对象时必须遵循的规则的基础。 C++17的值类别有: glvalue (generalized lvalue):表示对象身份的表达式,如变量名、函数名、类名等(包括具名右值引用,匿名右值引用比如s 阅读全文
posted @ 2024-02-08 23:35 trashwin 阅读(11) 评论(0) 推荐(0) 编辑
摘要: copy elision是指编译器为了优化,将不需要的copy操作直接省略了。比如函数返回值的copy操作和构造函数的copy操作等。 例子如下 #include<iostream> using namespace std; class A{ public: A(){ cout<<"default 阅读全文
posted @ 2024-02-08 23:33 trashwin 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 可调用对象 函数 函数指针 函数类 lamda表达式 bind对象 函数类 重载了函数调用运算符()的类的对象,称为函数对象,也叫仿函数。 class callable { public: void operator() (int x) const { cout << "callable::oper 阅读全文
posted @ 2024-02-06 19:19 trashwin 阅读(36) 评论(0) 推荐(0) 编辑
摘要: 网络基础 各种协议的端口可以在/etc/services中查看,对应的protocol(IP头中的协议字段)在/etc/protocols。 常用检错方法: CRC 循环冗余校验,用于以太网帧 Checksum 检验和,双字节反码求和,回卷溢出(低位+1),最后取反,用于IP数据报(IP首部)、TC 阅读全文
posted @ 2024-02-02 22:23 trashwin 阅读(15) 评论(0) 推荐(0) 编辑
摘要: static_cast static_cast(expression) 用于非多态类型的低风险转换,如基类和派生类之间的转换,基本数据类型之间的转换(包括任何隐式转换),用户自定义转换,把void指针转换成目标类型的指针等。不进行运行时类型检查,只在编译时检查。 具体如下 用于类层次结构中基类和派生 阅读全文
posted @ 2024-01-30 13:25 trashwin 阅读(10) 评论(0) 推荐(0) 编辑
摘要: 锁-条件变量-信号量 用一个例子引入,用于输出嵌套深度不超过n的括号序列。 void Tproduce() { while (1) { mutex_lock(&lk); if (!CAN_PRODUCE) { cond_wait(&cv, &lk); } printf("("); count++; 阅读全文
posted @ 2024-01-28 16:02 trashwin 阅读(12) 评论(0) 推荐(0) 编辑