const的使用总结

const修饰符

在C语言中有:#define MAX 20这种方式来定义变量,c++中用const来定义变量和#define的作用相同,消除了#define的不安全性(操作符优先级引起的不安全问题)。
且c++中一些数据是共享的,破坏了数据的安全性,常类型的引入,既保证了数据共享,又防止数据被修改,常类型的值在程序运行期间是不能被改变的。

const和指针使用

分为三种:

const char *p = "abcdef"; //指向常量的指针,不允许改变指针指的内容

char* const p = "abcdef";//常指针,不能改变指向

const char* p= "abcdef";//指向常量的常指针,指向和所指内容均不能改变





常引用

常引用,所引用的对象不能被修改。若常引用作为函数形参时,在函数体中则不能改变形参的值,否则就会在编译时出错。

int a = 10;
const int &b = a;   //b是一个常参数,b不能被修改

常引用做形参

int add(const int& i,const int & j)
{
i = i+30;  //不允许操作
j = j-10;  //不允许操作
return i+j;
}

常对象

对象被const修饰,则对象为常对象,对象中的数据为常量且定义常对象必须初始化,在整个生命周期(运行期间)中数值不能被改变。

  1. 常对象只能调用它的常成员函数,普通成员不能调用
  2. 初始化的值不能被修改
class Date
{
public:
	Date(int y)         
	{
		year = y;
	}

	void display()
	{
		cout << year << endl;
	}

	void set_year(int n)
	{
		year = n;
	}
private:
	int year;
};
int main()
{
	
	const  Date d(2018);   //定义常对象,且赋初值
	d.display();           //错误,因为常对象不能调用普通成员
	d.set_year(2019);      //错误,因为常对象数值不能被修改

	
	

	system("pause");
	return 0;

}

常数据成员

  1. 在一个类中有常成员变量的话,c++规定构造函数只能通过初始化列表来进行初始化,其他任何函数不能对其赋值操作 ,是非法的
    原因:
//初始化类成员有两种方式:构造函数体中初始化和参数列表
class Date
{
public:
	Date(int y)         
	{
		year = y;       //赋值方式
	}
	private:
	int year;
	
}
//初始化列表
class Date
{
public:
Date(int n)
:year(n);

private:
int year;
};
//const 变量在只能初始化,不能赋值,其次就是性能问题,参数列表初始化少一次调用默认构造函数,对于内置类型影响不大,但对于数据密集型来说,很适用。

常成员函数

class Date
{
public:
	Date(int y)         
	{
		year = y;       
	}
  
  void display()const;  //声明常成员函数,定义时也需要加const关键字
	private:
	int year;
	
}

Date::void display() const
{
cout<<year<<endl;
}
int main()
{
  Date d(2018);
  d.display();   //调用时不需要const
}

总结:

  • 常对象只能调用常函数
  • 常数据可以被常成员函数和普通函数调用
  • 常成员函数可以访问常数据成员,但不能修改其值,也可以访问普通成员
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
const关键字的应用场景有以下几种情况: 1. 在成员函数中,const修饰成员函数表示该函数对于对象的状态不会做出任何改变,即不会修改对象的任何成员变量的值。这意味着在const成员函数中只能调用其他const成员函数或者读取成员变量的值,而不能修改它们。这样的成员函数可以被const对象调用,以确保对象的状态不会被改变。 2. 在函数参数中,const修饰参数表示该参数是只读的,在函数内部不能修改该参数的值。这可以提高代码的可读性和安全性,同时也可以确保函数不会无意间修改传入的参数。 3. 在函数返回值中,const修饰返回类型表示返回的值是只读的。这可以防止调用者修改返回的值,保护函数内部的数据的完整性。 4. const还可以用于修饰类的成员变量,表示这些成员变量是不可修改的。这可以确保类的成员变量的值在对象的生命周期内保持不变。 总的来说,const关键字的应用场景是为了确保对象的状态不被修改、函数的参数不被修改和返回值不被修改,从而提高代码的可读性和安全性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [C/C++面试:const使用总结](https://blog.csdn.net/zhizhengguan/article/details/81274713)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值