zoukankan      html  css  js  c++  java
  • 细说 const

    1、const 简单应用

      const int pp=0 //pp 为整形常量,不能修改

      还有另外一种不常用的方式 但是最容易误导

      int const pp=0 //pp 为整形常量,不能修改 

      记住这两个等价声明,后面还有用处

      

      const int* ptr=&pp   //ptr 为指向int型常量的指针,ptr可以使用常量或非常量初始化

      int* const ptr ==&pp //ptr 为常量指针,初始化后,不能指向其他地址,仅能指向非常量

      const int & infer=pp  //infer为指向常量的应用,不能通过infer更改pp的值

      const int* const ptr1=&pp //ptr1为指向const对象的const指针

    2、个人误解

      typedef string* pstring

      const pstring cstr

      问 cstr是什么类型?

      答 cstr是const指针,指向string类型变量,其声明等价为   pstring const cstr ,即为string* const cstr

      最近真正遇到的问题是,模板类的特化问题:

     1 template<class T> 
     2 const T& min(const T& a,const T&b){
     3     retrun (a<b) ?a:b ;
     4 }
     5 
     6 
     7 //模板特化
     8 template<>
     9 const char* const& min<const char*>(const char* const&a,const char*const b){
    10 
    11     return (strcmp(a,b)<0) ?a :b;
    12 }

      最开始认为模板特化,就是讲T换成一个特别的类型,如此例:T换成const char*,简单的文本扩展,一般情况都是对的。

      那么最后应该为 min(const const char*& a,const const char*& b),这个想想是不对的。

      我觉得应该这么理解

      typedef const char*  T

      这样T作为简单类型名,这样min函数实际定义可以写为min(T const&a,T const&b) ,这样就容易理解了

      C++primer 也建议将const放在类型后面,这样容易理解

      

      

  • 相关阅读:
    Java 在方法和作用域内的内部类
    java 内部类和向上转型
    java 内部类使用 .this 和 .new
    java innerclasses(内部类)
    Java过滤器与SpringMVC拦截器之间的关系与区别
    Maven异常:Could not find artifact
    soapUI测试webservice(参数为xml格式的处理方式)
    maven仓库加载本地包依赖
    spring data jpa的学习总结
    Java 中常用缓存Cache机制的实现
  • 原文地址:https://www.cnblogs.com/OooO-CN/p/3983572.html
Copyright © 2011-2022 走看看