C/C++教程

const

本文主要是介绍const,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

区分const修饰的量是否能改,简单来说,主要看const后跟的那个量,该量是不能修改的。

1、const修饰变量
const修饰变量,可以使变量具有常属性,也就是该变量在以后的使用中其值都不能进行改变。
注意:const修饰的变量要进行初始化。

const a=11;
a=2;//错误,const 后面的a不能修改

const a=11;
a=2;//错误,const 后面的a不能修改

2.const和指针
const 修饰指针变量有以下三种情况。
(1):const 修饰指针指向的内容,则内容为不可变量。
(2):const 修饰指针,则指针为不可变量。
(3):const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量。

(4)不能把有常属性的赋给无常属性的,如:


3.修饰函数
(1).限定函数的传递值参数:

void function(const int Var); //传递过来的参数在函数内不可以改变.
(2).限定函数返回值型.
const int function(); //此时const无意义
const myclassname function(); //函数返回自定义类型myclassname.

int i=88;
const int*p=&i;
int*q=&i;
p=q;//正确
q=p;//错误

 

3.const修饰类成员函数
(1)常成员函数声明格式:
类型说明符 函数名(参数表)const;

 void print()const;     //常成员函数, Const成员函数不能改变对象的成员函数。此时const修饰隐含形参this.

(2)const可以修饰类成员函数,防止类成员函数中除了static成员之外的其他成员被修改。

class A:
{
public:
void fun()const
{
a=20;    //错误,不可以修改非static得值
b=10;
}
private:
int a ;
static int b;
};

 


(3)const关键字可以用于对重载函数的区分,如:

void getX(); //参数为:point*this
void getY() const; //const修饰隐含的形参this指针 //参数为:const point*this

void getX();                                                                           //参数为:point*this
void getY() const;  //const修饰隐含的形参this指针             //参数为:const point*this

同名不同参为重载。

4.const修饰类的成员变量
类的成员变量可以分为静态的和非静态的,如果const修饰的是非静态的成员变量,可以在构造函数中对该变量进行初始化;
如果const修饰的静态的成员变量,则需要在类外对该变量进行初始化。

class  A
{
public :
A():a(10)
{}
private:
const int a;
static const int b;
};
const int A ::b=15;

5.const和#define的区别
#define A 10
const int A=10;
上面两条语句的作用是一样的,但是后面一条语句可以节省内存空间,这是为什么呢?
原因在于在程序中多次使用const类型的变量,只会在第一次分配内存,但是如果使用#define定义的宏,则每次都会分配内存,这样看来使用const会节省很多空间。

8、const和extern
file1.cpp中, const int a;
file2.cpp中, extern int a; //错误,无法调用,
说明const修饰大的变量只能在该程序的本文件中使用,不能在该程序的其他文件中使用。
要想const定义的对象变量能被其他文件调用,定义时必须使用extern修饰为
extern const int a;
————————————————
版权声明:本文为CSDN博主「weixin_45413479」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45413479/article/details/100043769

这篇关于const的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!