一,const成员函数
c++面向对象的部分中,函数分为2部分
①非const成员函数
没有const的对象可以调用非const和const函数,const函数代表该函数不会修改对象,非const函数则相反
②const成员函数,const对象只能调用const函数,不可以调用非const函数,因为要保证对象不能被修改
结论
const可以作为函数重载的标志,
class Foo
{
private :
int member;
public :
void show()
{
cout << 1 << endl;
}
void show() const 这两个对象将构成重载,因为一个是常量成员函数,另一个不是
{
cout << 2 << endl;
}
}
int main()
{
Foo A;
A.show();
const Foo B;
B.show();
return 0;
}
运行结果
二,对象数组
创建对象数组必须要有默认构造函数
其过程如下:
先调用默认构造函数创建数组元素,花括号中的构造函数将会创建临时对象,此时调用
复制构造函数,把每一个临时对象的内容深度复制到每一个数组元素中去,
事实上,编译器会给你自动优化,数组元素变成了普通构造函数创建的
结论
创建对象数组必须要有默认构造函数,复制构造函数(必须都要在上下文中可访问,即不能是私有的!!)
复制构造函数调用的4中情况
①给对象【声明】时,用对象直接给变量用=赋值
②函数入口参数的对象赋值,值传递,创建临时对象,再赋值临时对象到入口参数的对象那里
③函数返回值的对象赋值,值传递,同上
④创建临时对象,比如我创建了对象数组,就是会调用复制构造函数,