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

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


以上源代码的第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

posted on 2006-10-06 22:02  真 OO无双  阅读(523)  评论(0编辑  收藏  举报

导航