关于《Java编程思想》的简单纠正

今天在看《Java编程思想》(我买的第四版,中文版)这本书的时候,在书第93页部分开头,有这么一段描述:

“5.6.1    指定初始化

    如果想为某个变量赋初值,该怎么做呢?有一种很直接的办法,就是在定义类成员变量的地方为其赋值(注意在C++里不能这么做,尽管C++的新手们总想这样做)。以下代码片段修改了InitialValues类成员变量的定义,直接提供了初值。“

原文是这么说的,请注意我划下划线的地方,这里的意思按我的理解是,在Java中可以在定义类成员变量的时候赋初值,但是在C++中却无法这么做,于是我将信将疑地做了个小测试。

#include<iostream>
class test
{
	int num = 5;
	double numbers = 1.5;
public:
	void print(void)
	{
		std::cout << num << std::endl;
		std::cout << numbers << std::endl;
	}
};

int main(void)
{
	test te;
	te.print();

	return 0;
}

我使用的是微软公司的Visual Studio 2017 社区版,在这个版本的编译器中,对于这种代码的书写是完全被接受的(编译过程甚至没有出现警告),结果十分明显,这个测试程序成功地输出了5和1.5这两个数字。

对于书中所述和实际的出入,我认为可能有以下原因:

1.本书的作者可能在写书的时候记错了

2.国内人员在翻译的时候出错(我没有本书的英文版)

3.作者写此书的时候,C++还停留在前面的几个版本,可能在旧的C++标准中并不允许类中初始化的行为,随着新标准的颁布,加入了这一语法。

4.我使用的编译器支持这类语法,但可能其他编译器不支持(正如我用C语言写代码的时候,Vs2017不支持变长数组(VLA),它将其视为错误,但在另一款编译器Dev C++中却完全支持)。

具体情况我也不清楚,如果有知情者知道的欢迎留言。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值