美文网首页
C++:const用法

C++:const用法

作者: 是枯木呀 | 来源:发表于2021-02-19 16:24 被阅读0次

在C++中用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。如果在编程中确实有某个值保持不变,也就是该值只能读不能写,就应该明确使用const,这样可以获得编译器的帮助。

1. const修饰普通类型的变量

const int  a = 7; 

a 被定义为一个常量,只能读不能写。

2. const修饰指针变量

const 修饰指针变量有以下三种情况。
A: const 修饰指针指向的内容,则内容为不可变量。
B: const 修饰指针,则指针为不可变量。
C: const 修饰指针和指针指向的内容,则指针和指针指向的内容都为不可变量。

A 内容不可变

const int *p = 8;

则指针指向的内容 8 不可改变。简称左定值,因为 const 位于 * 号的左边.

B 指针不可变

int a = 8;
int* const p = &a;
*p = 9; // 正确
int  b = 7;
p = &b; // 错误

对于 const 指针 p 其指向的内存地址不能够被改变,但其内容可以改变。简称,右定向。因为 const 位于 * 号的右边。

C 指针和内容不可变

int a = 8;
const int * const  p = &a;

这时,const p 的指向的内容和指向的内存地址都已固定,不可改变。
对于 A,B,C 三种情况,根据 const 位于 * 号的位置不同,总结三句话便于记忆的话:"左定值,右定向,const修饰不变量"。

3. const参数传递

const 修饰函数参数可以分为三种情况。

A 值传递

void function(const int a)

值传递的 const 修饰传递,一般这种情况不需要 const 修饰,因为函数会自动产生临时变量复制实参值。

B 指针传递

void function(int *const a)

当 const 参数为指针时,可以防止指针被意外篡改。

C 自定义参数传递

void function(const Test& a)

自定义类型(Test)的参数传递,需要临时对象复制参数,对于临时对象的构造,需要调用构造函数,比较浪费时间,因此我们采取 const 外加引用传递的方法。并且对于一般的 int、double 等内置类型,不采用引用的传递方式。

4. const函数返回值

const 修饰返回值分三种情况。

A 修饰内置类型的返回值

const 修饰内置类型的返回值,修饰与不修饰返回值作用一样。

const int function()
{
    return 1;
}

B 修饰自定义类型的作为返回值

const 修饰自定义类型的作为返回值,此时返回的值不能作为左值使用,既不能被赋值,也不能被修改。

C 修饰返回的指针或者引用

const 修饰返回的指针或者引用,是否返回一个指向 const 的指针,取决于我们想让用户干什么。

5. const修饰类成员函数

const 修饰类成员函数,其目的是防止成员函数修改被调用对象的值,如果我们不想修改一个调用对象的值,所有的成员函数都应当声明为 const 成员函数。
const 关键字不能与 static 关键字同时使用,因为 static 关键字修饰静态成员函数,静态成员函数不含有 this 指针,即不能实例化,const 成员函数必须具体到某一实例。

class Test
{
public:
    Test(){}
    Test(int _m):_cm(_m){}
    int get_cm() const
    {
       return _cm;
    }
 
private:
    int _cm;
};

相关文章

  • C++ const用法

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

  • C++ const 用法

    const修饰的是一个常量,常量的意思是不能修改该值,但是可以将常量值赋给变量。 pt是指向const单元的指针。...

  • C++ const用法

    一 修饰类 C++中const修饰类主要包括3个部分:数据成员,成员函数,对象。 数据成员const 修饰类的成员...

  • C++ const用法

    const限定符 在变量前面加上const,也可以创建一个常量。使用const创建常量的一般格式如下: 使用con...

  • C++:const用法

    在C++中用来修饰内置类型变量,自定义对象,成员函数,返回值,函数参数。如果在编程中确实有某个值保持不变,也就是该...

  • C++中const 关键字的用法(转)

    C++中const 关键字的用法 const修饰变量 const 主要用于把一个对象转换成一个常量,例如: 上面的...

  • const int = int const?

    根据我的了解, const 这个用法在 c++ 里非常复杂, 看完了 c++ primer 5th 里相关章节...

  • C++中的const成员函数(函数声明后加const)用法详解

    转载请注明出处,尊重智慧!文章来源: C++中的const成员函数(函数声明后加const,或称常量成员函数)用法...

  • const关键字和常量

    注:以下大部分内容来源于 coursera 课程《C++程序设计》 const的用法 定义常量 const 与de...

  • 2017-03-14 C++阶段

    Task List 1. 回顾引用用法 2. 掌握c++中 new开辟空间的用法 3. 回顾数组指针以及const...

网友评论

      本文标题:C++:const用法

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