C++
文章平均质量分 76
记录一下自己C++学习过程
i_actor
一只学C++的菜鸡。
展开
-
《Unix系统编程手册》第四章 通用的I/O模型
open既能打开一个已存在的文件,也可以创造一个新文件。当调用open()创建新文件时,位掩码参数mode指定了文件的访问权限。如果open()未指定O_CREAT标志,则可以省略mode参数。flag参数除了使用文件访问标志外,还用了其他操作标志。通过fcntl()的F_GETFL操作可以获取到文件的访问模式。原创 2023-09-11 19:58:26 · 177 阅读 · 0 评论 -
基于线程安全的栈和队列
基于线程安全的栈template<typename T>class threadsafe_stack{private: stack<T>data; mutable mutex m;public: threadsafe_stack(){} threadsafe_stack(const threadsafe_stack<T>& other) { lock_guard<mutex>lock(原创 2021-10-08 21:40:01 · 149 阅读 · 0 评论 -
Effective C++阅读记录(part 2 - 构造/析构/赋值运算 tips 9 - 12)
Tips09 - 绝不再构造和析构过程中调用virtual函数不能在构造函数和析构函数期间调用virtual函数,因为这样的调用不会带来预期的结果。eg:class Transaction{public: Transaction(); virtual void logTransaction() const = 0; ...};Transaction::Transaction(){ ... logTransaction();}class BuyTransaction: pub原创 2021-01-03 21:20:16 · 85 阅读 · 0 评论 -
Effective C++阅读记录(part 2 - 构造/析构/赋值运算 tips 5 - 8)
Tips05 - 了解C++默写并调用了哪些函数当我们申明一个空类时,C++编译器会自动为我们什么一个copy构造函数、一个copy assignment操作符、一个析构函数以及一个默认构造函数。且这些函数都是public和inline的。我们写的:class Empty{};编译器生成的:class Empty{public: Empty(){...} //默认构造函数 Empty(const Empty& rhs){...} //copy构造函数 ~Empty(){} //析原创 2021-01-02 14:34:58 · 86 阅读 · 0 评论 -
Effective C++阅读记录(tips 1 - 4)
Tips01:View C++ as a federation of languages把C++看作语言的联邦。C++包括了C、 Object-Oriented C++(C with class)、 Template C++、 STL。C++高效守则视情况而变化,取决于你使用C++的哪一部分。Tips02:尽量以const, enum, inline替换#define#define不被视作源码的一部分,在源码被编译器处理之前就被预处理器处理了。所以当#define出现错误时,会很难去追踪这个错误。最原创 2021-01-01 11:57:51 · 216 阅读 · 2 评论 -
C++STL - Stack(栈)和 Queue(队列) 篇
概述栈和队列是两个特殊的线性表,栈的特性是后进先出,队列的特性是先进先出,二者在STL中都已经实现了,如果需要使用他们的话需要分别加上头文件。#include<stack>#include<queue>using std::stack;using std::queue;栈和队列的定义和初始化与Vector不同,栈和队列定义时默认初始化,不能提供初始值。stack<int> st;queue<char>que;//stack和queue原创 2020-11-21 09:31:08 · 174 阅读 · 0 评论 -
C++STL-Vector篇
vector概述容器是一些特定类型对象的集合,vector是一种顺序容器,它提供了控制元素存储和访问顺序的能力,这种顺序不依赖于元素的值,而是与元素加入容器时的位置相对应。vector类型 - 可变大小数组。支持快速随机访问。在尾部之外的位置插入和删除元素可能很慢。Vector定义和初始化定义: //Vector<type_name>name //type_name:vector所存数据的类型,eg:int float,也可以是复合型 //name:vetcor这个数组的名字//原创 2020-11-19 19:57:11 · 87 阅读 · 0 评论 -
初识C++ - 函数指针
函数指针指向的是函数而非对象。和其他的指针一样,函数指针指向某种特定类型。函数的类型有返回类型和形参类型共同决定,与函数名无关。比如:bool lengthCompare(const string &s1, const string &s2);//pf指向一个函数,该函数的形参有两个const string引用,返回值为boolbool (*pf)(const string &, const string &);从声明的名字开始观察,pf前面有个*,因此pf是个指针原创 2020-11-14 10:54:09 · 74 阅读 · 0 评论 -
初识C++ - 常量表达式函数
常量表达式函数(constexpr function)是指能用于常量表达式的函数。其定义的方法和其他函数差不多,但主要满足一下规则:1. 函数返回类型是字面值类型2. 函数参数是字面值类型3. 函数体中有且只有一条return语句//egconstexpr int new_sz() { return 42;}constexpr int foo = new_sz(); //foo是一个常量表达式constexpr函数中可以包含其他语句,但这些语句运行时不能执行任何操作,只能类似于空语句、类型原创 2020-11-14 09:36:58 · 608 阅读 · 0 评论