C++
文章平均质量分 68
绫零依
这个作者很懒,什么都没留下…
展开
-
C++ - 容器修改---迭代器失效
map set 迭代器失效原创 2022-03-08 16:43:45 · 2497 阅读 · 1 评论 -
C++继承与派生总结
面向对象程序设计基于数据抽象、继承、动态绑定这三个基本概念。OOP的核心思想:多态性(polymorphism)继承(inheritance)基类(base class)直接基类(direct base)间接基类(indirect base)派生类(derived class)虚函数(virtual function) 其解析过程发生在运行时,而不是编译时类派生列表(class derivation list)动态绑定(dynamic binding) 使用基类的引用或指针调用一个虚成员原创 2021-06-22 22:18:52 · 1498 阅读 · 0 评论 -
C++动态绑定的实现-虚函数表
虚函数表C++多态的实现方式。演示:class B{public: virtual void func1(){cout<<"B::func1"<<endl;} virtual void func2(){cout<<"B::func2"<<endl;}};class D : public B{public: void func1() override {cout<<"D::func1"<<endl;原创 2021-06-22 00:18:37 · 165 阅读 · 0 评论 -
C++:类3-对象移动、移动构造、移动赋值
某些情况下,对象拷贝后就会立即被销毁,此时,移动而非拷贝对象会大幅度提升性能。右值引用(rvalue reference)int i = 42;int &&r = i * 42; //将右值引用绑定到一个右值上返回左值引用的函数,赋值,下标,解引用,前置递增/递减运算符->返回左值。返回非引用类型的函数,算术,关系,位,后置递增/递减运算符->返回右值。左值表示一个对象的身份,而一个右值表示对象的值。右值引用只能绑定到临时对象上去右值引用指向即将被销毁得分原创 2021-04-05 23:26:15 · 303 阅读 · 0 评论 -
C++:类-拷贝构造、拷贝赋值、析构
类通过5种特殊的成员函数:拷贝构造函数(copy constructor)、拷贝赋值运算符(copy-assignment operator)、移动构造函数(move constructor)、移动赋值运算符(move-assignment)和析构函数(destructor),来完成对象的拷贝、移动、赋值和销毁。class Foo(){ public: Foo(); ~Foo(); Foo(const Foo&); //拷贝构造函数原创 2021-04-05 23:25:43 · 2576 阅读 · 4 评论 -
C++:类-基本
类的基本思想是数据抽象(data abstraction)和封装(encapsulation)。数据抽象是一种以来于接口(interface)和实现(implementation) 分离的编程技术。接口与实现分离接口方在头文件中。 实现方在cpp文件中。使用预编译指令,避免多次引入头文件#ifndef ABC_H#define ABC_Hclass ABC{ };#endif构造函数默认构造函数如果没有显示定义构造函数,则编译器默认地隐式地定义一个默认构造函数。合原创 2021-04-05 23:24:47 · 202 阅读 · 0 评论 -
C++:动态内存 与 智能指针
静态内存:保持局部static对象、类static数据成员、定义在函数之外的变量栈内存:函数内非static对象自由空间(free store)或堆(heap): 储存动态分配(dynamically allocate)的对象智能指针 smart pointer头文件memory中shared_ptr 可多个指针指向同一个对象unique_ptr 一个指针独占所指向的对象weak_ptr 弱引用,指向shared_ptr所管理的对象shared_ptr 与 unique_ptrsh.原创 2021-04-05 23:23:50 · 152 阅读 · 0 评论 -
C++:运算符重载
不能被重载的::.*.?:一个运算符函数的成员至少有一个是类类型。重载运算符本质上是函数调用,运算符的求值顺序无法被保留。&&,||的短路求值属性也无法保留。应该使用与内置类型一致的含义:逻辑、关系运算符应返回bool算数类型返回一个类类型对象赋值运算符和复合赋值运算符返回对象的引用重载输入输出运算符>><<istream& operator>>(istream& is, Foo& foo){.原创 2021-04-05 23:22:43 · 140 阅读 · 0 评论 -
C++:运行时类型检查-关键字typeid
运行时类型检测(run-time type identification, RTTI)关键字 typeid 返回表达式的类型使用前应引用typeid(表达式\类型名)返回一个常量对象的引用,该对象的类型为标准库类型type_info或type_info的共有派生类。顶层const将被忽略作用于数组或函数时,不会执行指针的标准类型转换(即指针与数组区别对待,指针是指针类型,数组是数组类型。)当作用于某种类型的指针或引用时,如果该类型含有虚函数,运算符将使用指针或引用所绑定对象的原创 2021-04-05 23:21:53 · 388 阅读 · 0 评论 -
C++:顺序容器
顺序容器vector 可变大小数组,快速随机访问deque 双端队列,随机访问,首尾快速插入list 双向链表,快速任意插入/删除forward_list 单向链表array 固定大小数组 array<int,n> 声明时应加大小string 类似vector顺序容器操作类型:iteratorconst_iteratorsize_typedifference_type 带符号整数,足够保存两个迭代器之间的距离value_typereference 元素的原创 2021-04-05 23:20:29 · 188 阅读 · 1 评论 -
C++:关联容器
关联容器(associative-container)头文件map 关键字-值对multimap 允许关键字重复头文件set 只储存关键字multiset 允许关键字重复<unordered_map>头文件unordered_map 不保持关键字的顺序,使用哈希函数来组织元素。unordered_multimap<unorderer_set>头文件unordered_setunordered_multiset关联容器的迭代原创 2021-04-05 23:19:20 · 144 阅读 · 0 评论 -
C++:泛型算法
泛型算法 Generic Algorithm接收输入范围的算法总是使用前两个参数表示此范围常用findfind_if 传递谓词,找到第一个符合条件的count 查找元素出现的次数count_ifaccumulate 求和,numeric头中,传入范围,和的初始值equal 比较两个序列是否相同fill 填充copyreplace 替换元素replace_copy 替换元素,不改变原序列,结果输出到另一个序列(很多算法都有copy版本)sort 排序stable_sort原创 2021-04-05 23:15:27 · 210 阅读 · 0 评论 -
C++笔记:IO库-流整理
IO库类型头文件读写读写iostreamistreamostreamiostreamfstreamifstreamofstreamfstreamsstreamistringstreamostringstreamstringstreamwistream wcin wcout…前加w表示宽字符版,对应wchar_tfstream stringstream 继承自iostreamifstream istringstream 继承自istream原创 2021-04-05 23:13:31 · 190 阅读 · 2 评论