const

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

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

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

2.const和指针
const 修饰指针变量有以下三种情况。
(1):const 修饰指针指向的内容,则内容为不可变量。
(2):const 修饰指针,则指针为不可变量。
(3):const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量。
在这里插入图片描述
(4)不能把有常属性的赋给无常属性的,如:

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

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

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

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

同名不同参为重载。

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;

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值