转载自知乎
我按照不同的方式分类讨论,并且按照各个分类中耳熟能详的程度进行了排名按照公司列举腾讯
几乎所有部门的产品,后端都使用C++,尽管有许多新业务使用Go,以及部分旧业务在做Go的迁移,但C++仍然占有很大的技术栈
游戏使用虚幻引擎开发的,都...
每个想要当程序员的人总是离不开几个经典问题:
做开发还是算法?
做前端还是后端?
前端学什么框架?后端选什么语言?
作为一个软件工程的学生, 不管是前端后端, java亦或c++我都接触过. 这里想主要针对c++和java之间的选择简单谈谈.
提...
个人博客普遍有一个很让人头疼的问题, 就是如何设计分类和标签系统, 来让个人博客更整洁清晰.
每篇文章都有一个树状的分类, 以及不限数量的离散标签. 这种分类系统常见的问题是:
分类不够“泛”,却边界模糊
tag太多,反而没起到分类的作用
寻找分...
继承
可以在类名后面加上final关键词, 表示该类不能作为基类(不能被继承)
可以将基类的指针或引用指向派生类对象, 即基类指针和引用的静态类型和动态类型不一定相同(只有指针和引用可能发生这种情况, 通过对象进行的函数调用, 静态类型和动态类型是...
使用重载的运算符本质上是进行了一次函数调用
Tips
尽量不重载&&, ||, 逗号, 取址符
重载 <<
必须是非成员运算符
通常第二个参数为const Type &item, 引用避免拷贝, const...
几个原则
通常, 我们先考虑一个类是否需要自定义析构函数, 需要自定义析构函数的类通常也需要自定义拷贝和赋值操作(往往涉及指针)
需要拷贝操作的类也需要赋值操作, 反之亦然
tips
显式定义默认拷贝or析构, 可以使用=defaul...
程序运行时的内存划分
静态内存:用于存放static数据,包括局部static变量,类static成员,定义在任何函数之外的变量(全局变量)
栈内存:存放函数内非static的对象
堆(or 自由空间):存放动态分配的对象。使用动态内存的原因有三
...
算法分类
只读算法:前两个实参往往是两个迭代器
写操作算法
这类算法不检查写操作
back_iterator是一个插入迭代器,通过该迭代器进行赋值时,会调用push_back函数
重排元素的算法
定制操作
向算法传递函数(谓词,即可...
IO类
流对象不允许拷贝和赋值
一个流一旦发生错误,其后面的IO操作都会失败
流的条件状态:每个IO对象都会维护一组条件状态,用来指出此对象能否进行IO操作
管理输出缓冲区
遇到以下情况时会刷新
还可以用flush和en...
关键点
类的思想
各种成员函数类型
类的作用域
设计类的目的:数据抽象和封装
成员函数
定义在类内部的函数是隐式的inline函数
成员函数通过名为 this的隐式形参来访问调用这个函数的对象
成员函数的参数列表之后可以跟一个const,表示该...