构造函数
需求:每单定义一个新的对象,都希望对象中成员倍初始化一次。
类提供了一个专门的函数来完成对象的初始化,称为构造函数。和类名一致,没有返回值不是void,用于和普通函数区分。
this指针
每一个对象都隐藏了1个指针,this,指向对象自己,通过this指针可以获取对象本体。
函数重载
函数名相同,参数不同(类型,个数不同)
函数重载在c++中,允许函数的名字相同,但是参数列表的类型不同,这时才能调用不同的函数,达到函数同名的目的。
malloc和new的区别
他们都是c++、C语言的标准库函数,new返回指定类型的指针,并且自动计算所需要大小,malloc必须由程序员计算字节数,再返回后强行转换为实际类型的指针,new/delete在对象创建的同时可以自动执行构造函数初始化,在对象在消亡之前会自动执行析构函数。而malloc 只管分配内存,并不能对所得的内存进行初始化,所以得到的一片新内存中,其值将是随机的;
new和delete的分配原理图如下,
const关键字
用于修饰类中的成员变量,如果一个类的成员变量希望被保护,不能够被修改。用法类似只读,const数据成员的值不能修改。
在创建对象时,const数据成员必须进行初始化,通过创建对象时的构造函数的初始列表完成初始化工作。
const修饰成员函数,表示成员函数中没有任何成员变量修改函数。
只要有const修饰当前函数就不会有参数修饰,这样就不会报错,而像图中所示这样如果加上const就会报错,
对象用const修饰表示整个对象不能修改,只能访问const修饰的成员函数
Staic声明函数或变量为静态
1、staic修饰成员变量(静态变量),C语言中定义了静态变量存储在静态区,不用再创建的hi二次,
类定义全局变量方式:
数据类型 作用域运算符(类名 冒号 静态成员变量名)
2、static
函数属于整个类,所有的对象都是用同一个函数,相当于没有this指针,只能访问静态变量(所有的变量都是同一个),在静态成员函数中,只能访问静态变量,会报错,
使用static成员
对象名.静态成员
和c作用一致 A、static修饰成员变量-----静态成员变量 static成员变量由类进行定义,在对象创建之前就定义好,即定义为全局变量
类名::静态成员(因为是类创建的静态函数),普通成员一定要有对象,因为有对象才能创建空间,函数也是一样的写法
格式:数据类型类名::静态成员变量名
虚函数没有具体的实现。基类是个接口,并没有实现,
传虚函数