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