const用法总结

作者: saviochen | 来源:发表于2017-06-29 22:03 被阅读52次

const概述

const是指使用C和C++中常见关键字,在C语言中,主要用于定义变量为常类型以及修饰参数与返回值,而在C++中,还可以修饰函数的定义,定义类的成员函数。常类型的变量或对象的值时不能被更新的。

一般而言,const有以下几个方面的特点:

  • 1、定义const常量,具有不可变形。例如:
const int MAX = 100;
int array[MAX];
  • 2、进行类型检查,使编译器对内容有更多了解,消除了一些隐患。例如:
    void f(const int i){...}编译器就会知道i是一个常量,不允许修改。

  • 3、为函数重载提供参考。

class A
{
    void f(int i){};
    void f(int i)const {};
};
  • 4、节省空间。const定义常量从汇编角度来看,只是给出了对应的内存地址,而不像#define一样给的是立即数,所以const定义的常量在运行过程中只有一份复制品,而#define定义的常数在内存中则有由若干复制品。

  • 5、提供程序效率。编译器通常不为普通const常量分配存储空间,而是将其保存在符号表中,这使得他们成称为编译期间的常量,没有了存储与读内存的操作。使得它们的效率很高。

引申:什么情况下使用const关键字?

  • 1、修饰一般常量,例如
int const x = 2; 
const int x = 2;
  • 2、修饰常数组。定义或说明一个常数组,例如
int const a[8] = {0, 1, 2, 3, 4, 5, 6, 7};
const int a[8] = {0, 1, 2, 3, 4, 5, 6, 7}q;
  • 3、修饰常对象
class A;
const A a;
A const a;
  • 4、修饰常指针。
const int * A;//const修饰指向对象
int const * A;//const修饰指向对象
int * const A;//const修饰指针
const int * const A;//const修饰指向对象与指针
  • 5、修饰常引用,表示不可通过该别名修改变量值。需要注意的是,常引用可以绑定到右值上。
int x = 10;
const double& cdr = 1.0;
const int& y = x;
  • 6、修饰函数的常参数。
void fun(const int i);
  • 7、修饰编译器的返回值。表示返回值不可修改。
const int fun();
const Myclass fun2();
  • 8、修饰类成员函数。在调用时,不能修改类对象成员非静态成员变量的值。采用thiscall函数调用方式,因此不可修饰静态函数(调用规约是__cdecl或__stdcall)。关于函数调用可参考C++中函数的调用方式
class ClassName
{
public:
    int fun() const;
};
  • 9、在另一文件中引用const变量。变量在另一文件中不能被再初始化。
extern const int i;

相关文章

  • const用法总结

    基本概念:常量限定符,表明被其修饰的变量只能被访问,不能被修改,也就是只读。 用法可分为以下几类 修饰基本数据类型...

  • const用法总结

    const概述 const是指使用C和C++中常见关键字,在C语言中,主要用于定义变量为常类型以及修饰参数与返回值...

  • 你是我的面试吗?iOS开发之const,static,exter

    --- const --- const作用 ·被const修饰的变量是只读的 const的用法 ·const用来修...

  • ##宏与const

    宏与const 宏与const 的使用: 宏的用法: 一般字符串抽成宏,代码抽成宏使用。 const用法:一般常用...

  • C++ const用法

    C++中的const关键字的用法非常灵活,而使用const将大大改善程序的健壮性,本人根据各方面查到的资料进行总结...

  • const用法

    C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编...

  • iOS中const的简单介绍

    简单用法 基本数据类型 const 在基本数据类型中的用法 指针类型 指针 的简单用法 const 与 指针 的结...

  • es6 笔记·1·

    一,常量,变量 const :常量,用法 const info='hello es6'; 特点:首次赋值...

  • C语言中常量指针与指针常量区别浅析

    总结: const在前:NSString const * p = @"aa"; ——>NSString const...

  • const 与#define 用法

    用法 .h extern NSString * const LoginURL; .m NSString * ...

网友评论

    本文标题:const用法总结

    本文链接:https://www.haomeiwen.com/subject/rsxlcxtx.html