类内部的静态变量的定义和赋值:
这里不理解还是,留下引子。

这里是在类中创建了一个静态整型变量_scount,一个普通整型变量_a,对于_scount而言,他的定义是自己在类外面直接进行的,所以要带上类型,因为这个时候它是定义去创建,要明确类型,即 int A::_scount =0; 但_a的定义不是直接进行的,它是我们在类外面实例化一个对象的时候,间接创建出来的,所以后面执行构造函数的时候,完成的是对已存在内容的初始化,这个时候它已经不是定义了。


类中静态变量和局部变量的使用
class A
{
private:
static int _k;
int _h = 1;
public:
class B
{
public:
void foo(const A& aa)
{
cout << _k << endl;//由于_k是静态的,所以可以不指明是那哪个对象的
cout << aa._h<< endl;//但_h是局部的,要指明属于哪个对象才行
}
int _b1;
};
};
int A::_k = 1;
注意_k和_h使用的不同
在c++中,模板的定义和声明如果放在同一个文件和不同的文件,分别什么时候实例化
(按需实例化,在.cpp文件中如果模板函数没有被使用,那么就不会实例化出一个函数,那么编译的结果.o文件中,就不会有这个函数)

类模板的类型的缺省值
:缺省值在函数中形参是从右往左赋值

c++中的继承中的虚函数表问题
:在子类继承多个父类的情况下,子类中的重写虚函数放到对应父类的虚函数表中,而子类中的非重写的虚函数则放到第一个父类的虚函数表的重写虚函数的后面;(行为是先继承父类的虚函数表,这个时候的内容还是父类的虚函数,然后将子类中重写的虚函数覆盖父类的虚函数表中的对应的虚函数,接着将父类中没有的,也就是子类非重写的虚函数放在最后。三步:先继承,再覆盖,最后追加子类自己的)。
:当有连续继承时,即第二个子类继承多个父类,第三个子类继承第二个子类(B继承A,C继承B的请情况),此时,第二个子类的虚函数表是多个(每一个父类都有一个),且自己的虚函数是分布在这几个虚函数表中的,第三个子类是直接完整的继承下第二个子类的这些虚函数表,而不是整合成一个整体,如果第三个子类有新的重写的虚函数,则还是覆盖原来的,然后也在第一个继承的表中追加上自己的非重写的虚函数,也是三步:先继承,再覆盖,最后追加自己的。
:在第二个情况的情况下,还有第三个子类可能并不拥有最开始父类虚函数访问权限的情况,这种是编译时会检查权限,没有权限的话会直接报错,不生成对应的机器码。而为什么还是要继承第二个子类的虚函数表是要保证第三个子类中第二个子类的完整性。但这一点还是不太理解
子类继承多个父类的情况

连续继承

父类虚函数访问权限

memcpy函数
memcpy完成的是拷贝指针所指向空间的指定数量的内容,原封不动的以字节为单位拷贝,如果内空间中的内容是指针,那么拷贝的就是指针,也就是浅拷贝。

assert函数的使用:

指针引用
:从右往左看,先是对象str,然后&,说明它是个引用,然后是* ,是个指针的引用,后面是char类型的,最后是const 修饰前面的,即*str,也就是,指针指向的内容不可以修改,但这里没有修饰str的const,所以str可以修改,但在传参时,会有临时对象,临时对象具有常性,那此时的str时非常量的引用,就会导致权限方法,导致出错(非常量的引用具有常性的临时变量)

在vs中如何一次注释掉多行代码

默认参数只在声明中出现一次

strstr函数
:strstr()用于在一个字符串中搜索第一次出现的字串;第一个形参是源字符串,第二个参数是子字符串。如果找到则返回对应的起始指针,否则的话返回空指针。
