函数重载:
函数名相同,形参列表不同,我们就称为函数重载;
编译器在编译时起了个新名字,编译器内部有名字粉碎技术;
int Max(int a, int b)//H
{
return a > b ? a : b;
}
char Max(char a, char b)//D
{
return a > b ? a : b;
}
double Max(double a, double b)//N
{
return a > b ? a : b;
}
new和malloc的区别:
malloc不会调用类的构造函数,而new会调用类的构造函数
Free不会调用类的析构函数,而delete会调用类的析构函数
虽然为了与C语言兼容,C++仍保留malloc和free函数,但建议用户不用
malloc和free函数,而用new和delete运算符。
二个特殊的构造函数
(1)默认无参构造函数
当类中没有定义构造函数时,编译器默认提供一个无参构造函数,并且
其函数体为空
(2)默认拷贝构造函数
当类中没有定义拷贝构造函数时,编译器默认提供一个默认拷贝构造函
数,简单的进行成员变量的值复制
构造函数规则:
1 系统提供默认的拷贝构造器。一经实现,不复存在。
2 系统提供的时等位拷贝,也就是所谓的浅浅的拷贝。
3 要实现深拷贝,必须要自定义。
浅拷贝与深拷贝 :
系统提供默认的拷贝构造器,一经定义不再提供。但系统提供的默认拷贝
构造器是 等位拷贝,也就是通常意义上的浅拷贝。如果类中包含的数据元素全
部在栈上,浅拷贝 也可以满足需求的。但如果堆上的数据,则会发生多次析构行
为。