前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++_const 常量成员以及成员初始化列表及其常量类

C++_const 常量成员以及成员初始化列表及其常量类

作者头像
木杉乀
发布2021-05-08 14:42:41
9640
发布2021-05-08 14:42:41
举报
文章被收录于专栏:木杉の小屋

常量成员以及成员初始化列表

1.知识点介绍

常量成员,指的是在C++类中声明对象成员时可以加上const关键字,这样声明的成员叫常量成员, 常量成员分为常量数据成员和常量函数成员

2.常量数据成员
3.成员初始化列表

常量数据成员也在构造函数范围内, 但是常量数据成员值无法改变.

错误示范:

代码语言:javascript
复制
#include
using namespace std;
class CA {
public:
	const int id;
	CA(){
		id = 10;		// 报错: 表达式必须是可修改的值
	}
};
int main()
{
	CA a;
	cout << a.id << endl;
}

采用成员初始化列表对常量数据成员初始化

代码语言:javascript
复制
#include
using namespace std;
class CA {
public:
    int num;
	const int id;
	CA(): id(10) {}						// 在构造函数之后 + ":" + 初始化内容
	CA(int i, int n) : id(i), num(i) 	// 可以带参初始化列表
    {}									// 普通数据成员也可初始化
};										// 如果是要给类中的多个数据初始化中间用‘,’号隔开
int main()
{
	CA a, b(15);
	cout << a.id << endl;
	cout << b.id << endl;
}
代码语言:javascript
复制
初始化列表的特性
1、初始化列表也是实现类中成员数据的初始化的一种方式
2、一些特殊情况下,数据成员的初始化只能用初始化列表的方式给数据成员赋值,而不能在构造函数中
直接赋值
3、初始化列表必须写在构造函数的定义体后面
4、构造函数能对数据的初始化工作,初始化列表也可以,但是初始化列表能做的,构造函数不一定能
5、初始化列表的初始化顺序是按照他们在类中出现的顺序来初始化的,而不是在初始化列表中写的顺序
来初始化的
4.常量函数成员
代码语言:javascript
复制
#include
using namespace std;
class CA {
	int id = 10;
public:
	void fun() const	// 类内定义
	{
		id = 15;		// 报错
	}
	void fun1() const;	// 类内声明
};
void CA::fun1() const	// 类外实现
{ }

特点:

类中的常量函数成员, 在这个函数中不能对自身变量进行修改,通过语法限定.

只要是this指针所指向的所有数据都不可以被修改(静态数据可以改变)。

可以用来帮助我们来限定自身.

4.常量对象
代码语言:javascript
复制
class CA {
	int id = 10;
};
int main()
{
	const CA a;
	a.id = 10;			// 报错
}

常量对象声明, 在生成对象前面加上 const修饰.

常量对象中的任何数据成员都不能改变, 只能调用对象中的常量函数成员.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 常量成员以及成员初始化列表
    • 1.知识点介绍
      • 2.常量数据成员
        • 3.成员初始化列表
          • 4.常量函数成员
            • 4.常量对象
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档