const和static

 

const

 

  • 修饰一个变量后,该变量就变成了常变量,拥有常量的性质,不可以被重新赋值。

比如:const int num = 10;

          num = 20//就是错误的了。

const char* p:p是一个指针,它指向了一个常量字符。

char const *p:p是一个常量指针,它指向了一个字符。

由两句话的意思我们可以看出,const在不同的位置起到的作用是不一样的,它修饰的对象将变为常量,且不可以被更改。

 

  • const同样可以用作在函数传参时,使参数不可被更改。

      我们在进行传参时,有时会使用引用传参,或者地址传参的方式,这些方法有可能都会对参数本身造成改变,但如果我们不想改变参数本身内容时,使用const就可以起到我们想要的作用。

比如:

void fun1(const int& n)

{

            n = 5;//const修饰,改值失败。

}

 

void fun2( int& n)

{

            n = 5;

}

int main()

{

            int tmp1 = 2;

            int tmp2 = 2;

            fun1(tmp1);

            fun2(tmp2);

            return 0;

}

在这里我们得到的结果一定是tmp1在程序执行后依然维持原来的值,而tmp2则由于函数作用变成了5。

 

  • const修饰函数返回值,使返回值不能被更改。但接收返回值的变量同样要加const进行修饰。
  • const修饰的变量,只能被该文件,不能被别的文件调用,除非定义时加上extern进行修饰。

static

 

  • 在修饰局部变量的时候,修饰的局部变量只执行一次,且延长了生存时间,直到程序执行结束才释放。
  • 在修饰全局变量的时候,该全部变量不能被其他文件所访问,有extern修饰也不可以。
  • 在修饰函数时,此函数也不能被其他文件所访问,static修饰的局部变量存放在静态变量区,自动初始化为0。
  • 在类中,静态数据成员可以被多个对象所共享,它是所有类的共享成员,改变它的值,所有对象中的值都会改变。
  • 静态数据成员是在程序运行开始就分配空间的,即使一个类没有创建对象,仍然会分配空间给静态数据成员。
  • 静态数据成员只能在类外进行初始化,且使用类和对象名都可以进行访问。
  • 静态函数成员同样是被类所共享的。且没有this指针,而且只能访问静态数据成员。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值