day1

在继承中,构造函数的调用顺序,先调用父类的构造函数,然后调用子类对象的构造函数,最后在调用自己本类的构造函数

malloc分配内存是在堆上,函数内部的局部变量存放在栈区。
全局变量或者static修饰的变量才会初始化为0,栈的内存空间一般为2m

类中的成员函数主要包括静态成员函数和非静态成员函数,其中,非静态成员函数主要包括普通成员函数和构造函数,这些函数都可以被重载,内联以及设置默认参数

在32位计算机系统中,指针所占内存大小为4字节,在64位计算机系统中,指针所占字节大小为8字节

定义为成员函数的运算符重载,其左值必须是成员对象

指针 a+1表示数组首元素地址加1,&a+1表示数组偏移一位

1.成员函数可以看作类作用域的全局函数,不在对象分配的存储空间中,对象调用成员函数时,通过调用this指针和参数,所以类中没有必要存储成员函数的信息

1.c++通过类来实现封装性,把数据和数据的操作封装到类中 2.struct的默认访问呢权限时public,但是你也可以改成private 3.封装并不是单纯的把代码连接在一起,是数据和操作数据的函数 4.数据用public修饰时,可以用点运算符来访问

以关键字virtual的成员函数称为虚函数,主要是用于运行时多态,也就是动态绑定。 虚函数必须是类的成员函数,不能使友元函数、也不能是构造函数【原因:因为建立一个派生类对象时,必须从类层次的根开始,沿着继承路径逐个调用基类的构造函数,直到自己的构造函数,不能选择性的调用构造函数】 不能将虚函数说明为全局函数,也不能说明为static静态成员函数。因为虚函数的动态绑定必须在类的层次依靠this指针实现。 再添加一点: 虚函数的重载特性:一个派生类中定义基类的虚函数是函数重载的一种特殊形式。 重载一般的函数:函数的返回类型和参数的个数、类型可以不同,仅要求函数名相同; 而重载虚函数:要求函数名、返回类型、参数个数、参数类型和顺序都完全相同。 纯虚函数:是在基类中说明的虚函数,它在基类中没有是在定义,要求所有派生类都必须定义自己的版本。 纯虚函数的定义形式:virtual 类型 函数名(参数表)=0,该函数赋值为0,表示没有实现定义。在基类中定义为0,在派生类中实现各自的版本。 纯虚函数与抽象类的关系: 抽象类中至少有一个纯虚函数。 如果抽象类中的派生类没有为基类的纯虚函数定义实现版本,那么它仍然是抽象类,相反,定义了纯虚函数的实现版本的派生类称为具体类。 抽象类在C++中有以下特点: 抽象类只能作为其他类的基类;抽象类不能建立对象; 抽象类不能用作参数类型、参数返回类型或显示类型转换。
友元函数能够访问一个类的所有成员
函数重载(overload) 函数重载是指在一个类中声明多个名称相同但参数列表不同的函数,这些的参数可能个数或顺序,类型不同,但是不能靠返回类型来判断。特征是: (1)相同的范围(在同一个作用域中); (2)函数名字相同; (3)参数不同; (4)virtual 关键字可有可无(注:函数重载与有无virtual修饰无关); (5)返回值可以不同; 函数重写(也称为覆盖 override) 函数重写是指子类重新定义基类的虚函数。特征是: (1)不在同一个作用域(分别位于派生类与基类); (2)函数名字相同; (3)参数相同; (4)基类函数必须有 virtual 关键字,不能有 static 。 (5)返回值相同,否则报错; (6)重写函数的访问修饰符可以不同; 重定义(也称隐藏) (1)不在同一个作用域(分别位于派生类与基类) ; (2)函数名字相同; (3)返回值可以不同; (4)参数不同。此时,不论有无 virtual 关键字,基类的函数将被隐藏(注意别与重载以及覆盖混淆); (5)参数相同,但是基类函数没有 virtual关键字。此时,基类的函数被隐藏(注意别与覆盖混淆);
构造函数不能时虚函数,析构函数可以时虚函数,可以被重写

printf打印字符串时,遇到空字符结束
类方法是属于一个类的,是类的静态方法,调用方法是类名.方法名(),类方法主要是工具类的方法,类变量也叫静态变量,在变量前面加上static修饰,实例变量也叫对象变量,static修饰的方法不能直接调用,没有static的方法 要new一个对象出来 才能调用

浙公网安备 33010602011771号