C++学习小记录

1)switch括号中的表达式只能是整型、字符型或枚举型,case :中的表达式类型必须与之相对应;在带有break的情况下,各个case(包括default)出现的次序并不影响执行结果;

2)int 32位;float 32位;double 64位;

3)头文件中的string与string.h是不同的资源,string是指string字符串类,string.h是诸多字符串空间操作的库函数集合;

4)cin遇到空格或是回车符就终止输入,因此在输入字符串时一般不用cin,而是用getline(cin/in, s)。若是要将输入的一行字符串以空格为间隔符分开,则引用istringstream创建对象。

5)程序运行时的进程空间:栈区,堆区,全局数据区,代码区。 栈区:存放函数数据区(即局部数据区),它动态地反映了程序运行中函数状态,其运动轨迹正好用来观察函数的调用与返回,从而研究其函数机制;堆区:存放动态内存,供程序随机申请使用;全局数据区:存放全局数据、常量、文字量、静态全局量和静态局部量;代码区:存放程序的执行代码。

6)函数重载:在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数。函数重载对于普通函数和类的成员函数同样适用。(类的成员函数的重载必须是在同一个类中)

    函数覆盖:覆盖是指派生类中存在重新定义的函数,其函数名、参数列、返回值类型必须同父类中的相对应被覆盖的函数严格一致,覆盖函数和被覆盖函数只有函数体不同。当派生类对象调用子类中该同名函数时会自动调用子类中的覆盖版本,而不是父类中的被覆盖函数版本,这种机制就叫做覆盖

    函数隐藏:是指派生类的函数屏蔽了与其同名的基类函数。

成员函数被重载的特征:

(1)相同的范围(在同一个类中);
(2)函数名字相同;
(3)参数不同;
(4)virtual 关键字可有可无。

覆盖:派生类函数覆盖基类函数,特征是:
(1)不同的范围(分别位于派生类与基类);
(2)函数名字相同;
(3)参数相同;
(4)基类函数必须有virtual 关键字。

函数隐藏的特征

(1)如果派生类的函数与基类的函数同名,但是参数不同。此时,不论有无virtual关键字,基类的函数将被隐藏(注意别与重载混淆)。
(2)如果派生类的函数与基类的函数同名,并且参数也相同,但是基类函数没有virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆)。

*函数的隐藏和覆盖在调用时的处理方式是不同的,具体的可通过样例体会

 

posted on 2017-11-15 21:11  LittleRea  阅读(124)  评论(0)    收藏  举报