zoukankan      html  css  js  c++  java
  • c++ 基础知识 0001 const 知识2

    1.const修饰函数返回值

    (1)指针传递

    如果返回const data,non-const pointer,返回值也必须赋给const data,non-const pointer。因为指针指向的数据是常量不能修改。

    const int * mallocA(){ ///const data,non-const pointer

    int *a=new int(2);
    return a;
    }

    int main()
    {
    const int *a = mallocA();
    ///int *b = mallocA(); ///编译错误
    return 0;
    }

    2. 如果函数返回值采用“值传递方式”,由于函数会把返回值复制到外部临时的存储单元中,加const 修饰没有任何价值。所以,对于值传递来说,加const没有太多意义。

    所以:

      不要把函数int GetInt(void) 写成const int GetInt(void)。
      不要把函数A GetA(void) 写成const A GetA(void),其中A 为用户自定义的数据类型。


    3. 注意const int x和int const x的效果是完全一样的(const:常量)

    const int *p 和int *const p是不一样的,前者*p不可变,p可变;后者p不可变,*p可变

    总之,在const之后的东西(*p或者p)是常量,不可变

    结构体变量只能在定义的同时进行初始化,不能先定义再初始化


    4. 使用#define定义的变量是在编译时,直接进行替换,执行过程中读取操作数就是立即数寻址;使用const定义的变量,可能是直接寻址或者间接寻址等。速度的确会慢点。

  • 相关阅读:
    isinstance函数
    Django之ORM那些相关操作
    Django ~ 2
    Django ~ 1
    Django详解之models操作
    Django模板语言相关内容
    livevent的几个问题
    客户端,服务器发包走向
    关闭客户端连接的两种情况
    std::vector<Channel2*> m_allChannels;容器,以及如何根据channelid的意义
  • 原文地址:https://www.cnblogs.com/rebot/p/10230749.html
Copyright © 2011-2022 走看看