接上面:
1.C++中从函数中直接跳回到main主函数,即忽视函数中其它递归调用,函数中使用throw 主函数中使用try catch即可
2.C语言有类型转换机制,在执行运算时,小于int的类型将会提升。换句话说,(这里)两个char类型相加,会自动转换成int类型运算,得到结果后再转换为char类型。这是隐式转换。所以char+char=数字;char+int=数字
3.即便是基类的虚函数,也必须通过 base*x;
base y;
x=&y;
x->display();
这种定义两个对象的方式才能调用。
4.base2继承了base1,而base3仅仅继承了base2,此时若使用虚函数,则base1的指针对象仍然可以访问base3的成员。(因为base3间接继承了base1)
5.. .* :: ?: sizeof无法被重载运算符
6.数组名代表的是首地址,是一个'指针型常量,所以a[];a++无法实现,必须用另一个指针p指向它,改变p的值.但要时刻注意p指向了a的哪里
7.类中私有变量或者公有变量,在方法内与参数同名的时候,可以用THIS指明参数为类中的变量如class obj
{
private:
int var;
public
obj(int var)
{
this->var=var;//这里参数var和私有成员同名,如果不用this无法区分
}
};
8.友元函数必须在类内申明,在类外定义,并且行参必须是类名+引用符号&。如friend fun(f &i)。在类外以i.a,i.b这种间接调用方式调用私有成员
9.class中 const数据成员 和 引用 类型的数据成员必须在该类的对象建立的同时进行初始化,这种初始化只能用成员初始化列表进行。引用类型相当于变量的影子,一模一样,不消耗内存,谁变另一个就会变。而静态函数,内联函数,构造函数不能作为虚函数
10.如何初始化一串字符?如f a(“hh”);可以f(char *t){s=new char[strlen(t)+1];strcpy(s,t);}其中加1是为了存储结束符/n.strlen传入的是首地址所以不是*t