更多课程 选择中心

C/C++培训
达内IT学院

400-996-5531

C++中const的特性的使用

  • 发布:C++培训
  • 来源:资料库
  • 时间:2020-05-26 16:12

本文主要介绍了C++中const的特性的使用,通过示例代码为大家介绍的,内容非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们可以随着c++培训班的小编一起学习学习。

本文主要内容:

1:修饰变量,说明该变量不可以被改变;

2:修饰指针,分为只想常量的指针和自身是常量的指针

3:修饰引用,指向常量的引用,用于修饰形参,即避免了拷贝,有避免了函数对值的修改;

4:修改成员函数:说明该成员函数内不能修改成员变量。

5:指针与引用

下面是对各种情况的示例:

//注:1:const修饰的引用cj的值且引用的对象无法修改无法修改,但是引用的i是可修改的

#include <iostream>

using namespace std;

int main() {

int i = 1;

const int &cj = i;

cout << "cj : " <<cj<< endl;(√)

i=2;

cout << "cj : " <<cj<< endl;(√)

cj=3;

cout << "cj : " <<cj<< endl;(×)

int a=9;

cj=a; (×)

return 0;

}

错误提示:

/code/main.cpp: In function ‘int main()':

/code/main.cpp:15:4: error: assignment of read-only reference ‘cj'

cj=3;

^

/code/main.cpp:19:4: error: assignment of read-only reference ‘cj'

cj=a;

^

sandbox> exited with status 0

//注:常量引用,本身也要是常量才行:

#include <iostream>

using namespace std;

int main() {

const int i = 4;

const int &ck = i; //正确,常量对象绑定到 const引用

cout<< "ck="<<ck<<endl;

const int b = 5;

int &r = b; //错误,

return 0;

}

/code/main.cpp: In function ‘int main()':

/code/main.cpp:13:14: error: invalid initialization of reference of type ‘int&' from expression of type ‘const int'

int &r = b; //错误,

^

sandbox> exited with status 0

//注:const 的隐式转换:

#include <iostream>

using namespace std;

int main() {

double b = 2.14;

const int &a = b;

// 会进行如下转换:

// int temp = b;

// const int &a=temp;

// 所以,给b进行赋值,a可能

cout<<"a="<<a<<endl;

return 0;

}

运行结果:

a=2

sandbox> exited with status 0

//注:修饰成员函数_1:

class Date

{

private:

int m_year;

int m_month;

int m_day;

public:

int GetDay(void) const

{

m_day=7;

return m_day;//修饰的情况下,不能对成员变量进行修改;

}

};

// void GetDay(void) const

// {

// return m_day;

// }

int main() {

double b = 2.14;

const int &a = b;

// 会进行如下转换:

// int temp = b;

// const int &a=temp;

// 所以,给b进行赋值,a可能

cout<<"a="<<a<<endl;

return 0;

}

错误提示:

/code/main.cpp: In member function ‘int Date::GetDay() const':

/code/main.cpp:16:8: error: assignment of member ‘Date::m_day' in read-only object

m_day=7;

^

sandbox> exited with status 0

//注:修饰函数_2

#include <iostream>

using namespace std;

class Date

{

private:

int m_year;

int m_month;

mutable int m_day;//通过被mutable修改的成员变量,就可以被修改了

public:

int GetDay(void) const

{

m_day=7;

return m_day;

}

};

// void GetDay(void) const

// {

// return m_day;

// }

int main() {

double b = 2.14;

const int &a = b;

// 会进行如下转换:

// int temp = b;

// const int &a=temp;

// 所以,给b进行赋值,a可能

cout<<"a="<<a<<endl;

return 0;

}

运行结果:

a=2

sandbox> exited with status 0

//注:const修饰的指针

#include <iostream>

using namespace std;

int main() {

const int* p = NULL;//这两种修饰的是*p指向的值

//int const* p = NULL;

int a=9;

p=&a;//修改了p指向的地址,任然没有出错

cout<<"*p="<<*p<<endl<<"p="<<p<<endl;

int c=10;

int* const b = &c;//这两种修饰的是p指向的地址

c=45;

*b=c;//修改了b指向的值,任然不会出错

cout<<"*b="<<*b<<endl<<"b="<<b<<endl;

b=&a;//这里有问题了,b指向的地址是不能修改的

cout<<"*b="<<*b<<endl<<"b="<<b<<endl;

return 0;

}

运行结果:

/code/main.cpp: In function ‘int main()':

/code/main.cpp:21:3: error: assignment of read-only variable ‘b'

b=&a;

^

sandbox> exited with status 0

//注:const修饰的引用

#include <iostream>

using namespace std;

int main() {

int x = 3;

const int& y = x;

cout<<"y="<<y<<endl;

x=9;

cout<<"y="<<y<<endl;

y=9;//const修饰的引用是不能够在更改引用指向的对象的

cout<<"y="<<y<<endl;

return 0;

}

运行结果:

/code/main.cpp: In function ‘int main()':

/code/main.cpp:13:3: error: assignment of read-only reference ‘y'

y=9;

^

sandbox> exited with status 0

到此这篇关于C++中const的特性的使用的文章就介绍到这了,也希望正在学习C++的同学能够勤奋练习,最后找到一个好工作。

文章来源:脚本之家,版权声明:转载文章来自公开网络,版权归作者本人所有,推送文章除非无法确认,我们都会注明作者和来源。如果出处有误或侵犯到原作者权益,请与我们联系删除或授权事宜。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:C语言中结构体指针的定义详解
下一篇:C++中strcpy函数例题讲解

超全的C语言标识符知识

C指针——指针类型转换

C指针——指针和结构类型的关系

C指针——数组和指针的关系

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省