C++学习

top-level 不可以用于重载,用于重载无意义,因为换了值,还是表示一样的东西。不可以改变指针指向,但可以改变指针指向的内容,const就是修饰所指向的对象 ,实例:
const int a ; int* const a;
top level传参,相当于去掉中间的const(top level const can be droped)

low-level参数可以用于重载,因为他表示的是不同的东西。可以改变指针指向,但不能改变指向地址的内容,实例:
const int* a;

如何判断top/low level:对于复合类型(带*的),判断const距离变量的远近
对于简单类型,直接就是top level

#define NDEBUG
对assert语句不再care

3.C++重载,必须满足参数不同(个数上 || 类型上)

4.隐式调用 与explict

5.类内指针this实际上是

ClassName * const this,top-level类型, 定义的对象指针所指向的值不可变

6.类内static成员变量随着程序的 开始产生,随着程序的结束而销毁,跟具体对象无关,在对象外定义
可以通过className::static member来调用

7.stringstream ss,根据空格来分割

vector扩容机制

7.push_back和emplace_back的区别
https://zhuanlan.zhihu.com/p/213853588
C++ vector:: push_back 会先创建临时对象,然后将临时对象拷贝到容器中,最后销毁临时对象;但是 emplace_back 仅会在容器中原地创建一个对象出来,减少临时对象拷贝、销毁的步骤,所以性能更高

你可能感兴趣的:(c++)