(原創) C++可以使用Direct-Initialization的方式在Built-in Type (C/C++)

 1 None.gif #include  < iostream >
 2 None.gif
 3 None.gif using   namespace  std;
 4 None.gif
 5 ExpandedBlockStart.gifContractedBlock.gif int  main()  dot.gif {
 6InBlock.gif
 7InBlock.gif  // int val = 10;
 8InBlock.gif  int val(10);
 9InBlock.gif
10InBlock.gif  cout << val << endl;  
11InBlock.gif
12InBlock.gif  return 0;
13ExpandedBlockEnd.gif}


以上源代码的第7行,宣告int型别的val变量并同时指定初值为10,int val = 10,C是这样写,C#、Java也是这样写,但C++除了允许C的写法外,还另外允许第8行的int val(10)的写法,若以OO而言,Every thing is object,当然int型别的变量也是Object,所以也应该使用Object所用的Direct-initialization的方式,所以int val(10)的语法,更能显示出『宣告int型别的对象,并将10传给Constructor建立val object』的语意,或许C++背后只是使用Operator Overload的方式完成这个Syntax Sugar,但最少这种语法实现了Every thing is object的理念,不像C#的观念是将Type分成两种,一种是Built-in Type,如int,使用=的方式建立,一种是Class Type,需用Constructor的方式建立。在这方面,我觉得C++表现较好,为了兼容C,当然可用=,但也提供了用Constructor的方式建立built-in type,算是真正对OO的支持。


Reference

C++ Primer 4th P.48

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值