zoukankan      html  css  js  c++  java
  • const用法(转)

    一 const基础

    如果const关键字不涉及到指针,我们很好理解,下面是涉及到指针的情况:

    int b = 500;
    const int* a = &b; [1]
    int const *a = &b; [2]
    int* const a = &b; [3]
    const int* const a = &b; [4]

    如果你能区分出上述四种情况,那么,恭喜你,你已经迈出了可喜的一步。不知道,也没关系,我们可以参考《Effective c++》Item21上的做法,

    如果const位于星号的左侧,则const就是用来修饰指针所指向的变量,即指针指向为常量;

    如果const位于星号的右侧,const就是修饰指针本身,即指针本身是常量。

    因此,[1]和[2]的情况相同,都是指针所指向的内容为常量(const放在变量声明符的位置无关),这种情况下不允许对内容进行更改操作,如不能*a = 3 ;

    [3]为指针本身是常量,而指针所指向的内容不是常量,这种情况下不能对指针本身进行更改操作,如a++是错误的;

    [4]为指针本身和指向的内容均为常量。

    二 作为参数

    void display(const double& r);或者void display(const double* r);

    说明:

    1 在引用或者指针参数的时候使用const限制是有意义的,而对于值传递的参数使用const则没有意义

    2 保证引用的变量的值不被改变

    3 const在double前或者后面意思相同,只是不同的人的写法不同

    三 const对象

    声明为const的对象只能访问类中声明为const的成员函数,不能调用其它成员函数.

    四 const成员函数

    类型说明符   函数名(参数表)const;             void print(int i) const;

    说明:

    1 const是函数类型的一个组成部分,因此在实现部分也要带const关键字.

    2 常成员函数不能更新对象的数据成员,也不能调用该类中没有用const修饰的成员函数.


    五 使用const的一些建议

    1 要大胆的使用const,这将给你带来无尽的益处,但前提是你必须搞清楚原委;
    2 要避免最一般的赋值操作错误,如将const变量赋值,具体可见思考题;
    3 在参数中使用const应该使用引用或指针,而不是一般的对象实例,原因同上;
    4 const在成员函数中的三种用法(参数、返回值、函数)要很好的使用;
    5 不要轻易的将函数的返回值类型定为const;
    6除了重载操作符外一般不要将返回值类型定为对某个对象的const引用;
  • 相关阅读:
    51nod 1179 最大的最大公约数 (数论)
    POJ 3685 二分套二分
    POJ 3045 贪心
    LIC
    HDU 1029 Ignatius and the Princess IV
    HDU 1024 Max Sum Plus Plus
    HDU 2389 Rain on your Parade
    HDU 2819 Swap
    HDU 1281 棋盘游戏
    HDU 1083 Courses
  • 原文地址:https://www.cnblogs.com/macula7/p/1960664.html
Copyright © 2011-2022 走看看