C++中typedef和using的使用

typedef和 using都是给类型起别名,在使用的过程中有什么需要注意的地方?

  • typedef和using都是给类型起别名,如果给不带*的变量起别名的话,很容易理解
  • typedef int pInt;和using pInt = int;时会是什么样
typedef int* pInt;
using pInt = int*;

int main()
{
    int a = 10;
    int b = 10;
    //1、const int * pA = &a; 
    //2、int * const pA = &a;
    //不外乎有上面两种情况,
    //如果是第一种,那么不可以通过pA修改变量b的值,并且pA可以指向&b
    //如果是第二种,那么可以通过pA去修改变量a的值,并且pA不能指向&b
    const pInt pA = &a; //实测可以通过编译,
    *pA = 100;
    cout << a << endl;

    pA = &b;//实测不能通过编译

    return 0;
}

通过测试,我们可以看到当有*存在时const修饰typedef或者using重命名的类型时,const只修饰的其实是一个常量指针。

注意:很多人在这个地方可能会认为是上面所说的第一种,做简单的文本替换,这种理解是错误的,因为const 修饰的对象是pA,相当于pInt const pA 这样就很好理解了

猜你喜欢

转载自blog.csdn.net/len_yue_mo_fu/article/details/82467329
今日推荐