C++primer 第五版课后练习(二)auto与const 引用和指针

来源:互联网 发布:软件工程和软件危机 编辑:程序博客网 时间:2024/06/04 17:56
P62页

auto const的联系

具体看代码情况吧

#include <iostream>#include "Sales_item.h"int main(){/**********练习2.33 2.44**********/int i = 0, &r = i;//r是整型引用const int ci = i, &cr = ci;auto a = r;//将i的值给整型aauto b = ci;//b是一个整数,ci失去顶层const性质auto c = cr;//c是一个整数,并非是一个整型常量auto d = &i;//d是一个指向整数的指针auto e = &ci;//e是一个指向整型常量的指针(相当于const int *,注意不是const int* const )auto &g = ci;//是一个整形常量的引用 当用auto&的时候 保留顶层const属性a = 42;b = 42;c = 42;d = 42;//错误d是指针,无法用字面值常量为其赋值e = 42;//错误 理由同上/************练习2.35************/const int m = 4;auto j = m;//j是一个整数int型const auto &k = m;//k是一个对整型常量的 引用auto *p = &m;//p是指向整型常量的指针const auto j2 = m, &k2 = m;//j2是const int型 k2是对整型常量的引用auto &l = m, *n = &i;//这样做是非法的,前者&l=m说明auto是一个const int 而后者说明n是一个int*std::cout << i << std::endl;system("pause");return 0;}
执行后,编译器会报错

1>------ 已启动生成:  项目: Game1, 配置: Debug Win32 ------
1>  Game.cpp
1>(17): error C2440: “=”: 无法从“int”转换为“int *”
1>          从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>(18): error C2440: “=”: 无法从“int”转换为“const int *”
1>          从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1>(26): error C3538: 在声明符列表中,“auto”必须始终推导为同一类型
1>          可能是“int”
1>          或       “const int”
========== 生成:  成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========


1 0
原创粉丝点击