C++Primer中文版(第四版)题解整理(18)
时间:2025-05-06
时间:2025-05-06
C++Primer题解
合法赋值的作用:
(a)将一个double型字面值赋给int型变量ival,发生隐式类型转换,ival得到的值为3。
(b)将int值1赋给变量ival。
(c)将int值1赋给变量ival。
习题2.26
(a)中的定义和(b)中的赋值存在哪些不同?哪些是非法的?
(a)intival=0;(b)ival=ri;
constint&ri=0;ri=ival;
【解答】
intival=0;定义ival为int变量,并将其初始化为0。
constint&ri=0;定义ri为const引用,并将其绑定到右值0。
ival=ri;将0值赋给ival。
ri=ival;试图对ri赋值,这是非法的,因为ri是const引用,
不能赋值。
习题2.27
下列代码输出什么?
inti,&ri=i;
i=5;ri=10;
std::cout<<i<<""<<ri<<std::endl;
【解答】
输出:
1010
ri是i的引用,对ri进行赋值,实际上相当于对i进行赋值,所以输出i和ri的值均为10。
习题2.28
编译以下程序,确定你的编译器是否会警告遗漏了类定义后面的分号。classFoo{
//empty
}//Note:nosemicolon
intmain()
{
return0;
}
如果编译器的诊断结果难以理解,记住这些信息以备后用。
【解答】
在笔者所用的编译器中编译上述程序,编译器会给出如下错误信息:
errorC2628:'Foo'followedby'int'isillegal(didyouforgeta';'?)(第4行)