c++学习笔记06-const成员函数和对象数组

一,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中情况

①给对象【声明】时,用对象直接给变量用=赋值
②函数入口参数的对象赋值,值传递,创建临时对象,再赋值临时对象到入口参数的对象那里
③函数返回值的对象赋值,值传递,同上
④创建临时对象,比如我创建了对象数组,就是会调用复制构造函数,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿维的博客日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值