C++之const 类型

本文详细介绍了C++中的常引用、常对象及常成员的概念与使用方法,包括如何声明与初始化常数据成员,以及如何定义常成员函数来处理常对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 常引用
在说明引用时加上const修饰,则被说明的引用为常引用。格式:
const 类型说明符& 引用名
例如:
int a=5;
const int& b=a;
其中,b即是一个常引用,它所引用的对象不允许更改。
语句b=12是非法的
2常对象
说明对象时用const修饰,则被说明的对象为常对象。

常对象的说明形式如下:

类名 const 对象名[(参数表)];或者

const 类名 对象名[(参数表)];
在定义对象时必须进行初始化,而且不能被更新。
#include<iostream>
using namespace std;

class Sample
{
	public:
		int m;
		Sample(int i,int j)
		{
			m = i;
			n = j;
		}
		void setvalue(int i)
		{
			n = i;
		}
		void disply()
		{
			cout<<"m="<<m<<endl;
			cout<<"n="<<n<<endl;
		}
	private:
		int n;
};
int main(int argc,char *argv[])
{
	const Sample a(10,20);
//	a.setvalue(40);
//	a.m = 30;
//	a.disply();
	return 0;
}


常对象的数据成员不能直接或通过函数间接更改;
不允许常对象调用普通成员函数;
常对象只能调用它的常成员函数
3 常对象成员
• 1. 常数据成员
•用const说明的数据成员称为常数据成员。
•类中说明为常数据成员,在构造函数中只能通过初始化列表对该数据成员进行初始化,其他任何函数都不能对该成员赋值。
常数据成员举例

#include<iostream>
using namespace std;

class Date
{
	public:
		Date(int y,int m,int d);
		void showDate();
		const int &r;
	private:
		const int year;
		const int month;
		const int day;
};
Date::Date(int y,int m,int d):year(y),month(m),day(d),r(year)
{}
inline void Date::showDate()
{
	cout<<"r="<<r<<endl;
	cout<<year<<"."<<month<<"."<<day<<endl;
}
int main(int argc,char *argv[])
{
	Date date1(1998,4,28);
	date1.showDate();
	return 0;
}
3 常对象成员
• 2.常成员函数
– 在类中使用关键字const说明的函数为常成员函数,常成员函数的说明格式如下:
类型说明符 函数名(参数表) const;
– const是函数类型的一个组成部分,因此在函数的实现部分也要带关键字const。(也即,函数前面的const表示返回常量,比如:constint;const long;const char等等; 而函数后面const表示该函数不具备对类成员变量进行修改的权力。 )
– 常成员函数一般用于操作常量或常对象。
#include<iostream>
using namespace std;

class Date
{
	public:
		Date(int y,int m,int d);
		void showDate();
		void showDate() const;
	private:
		int year,month,day;
};
Date::Date(int y,int m,int d):year(y),month(m),day(d)
{}
void Date::showDate()
{
	cout<<"ShowDate1:"<<endl;
	cout<<year<<"."<<month<<"."<<day<<endl;
}
void Date::showDate() const
{
	cout<<"ShowDate2:"<<endl;
	cout<<year<<"."<<month<<"."<<day<<endl;
}
int main(int argc,char *argv[])
{
	Date date1(1998,4,28);
	date1.showDate();
	const Date date2(2002,11,14);
	date2.showDate();
	return 0;
}

重载(const可用于参与对重载函数的区分)
常对象date2调用有const修饰符的常成员函数


常对象只能调用常成员函数,不能调用普通的成员函数。
常成员函数是常对象的唯一的对外接口,从而实现了对常对象的保护;
常成员函数不能更新对象的数据成员。
常成员函数不能调用该类中的普通成员函数,从而保证常成员函数中绝对不会更新数据成员的值。










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值