- #include <iostream>
- using namespace std;
-
- class A
- {
- private:
- int x;
- int y;
-
- public:
- A()
- {
- cout << "constructor0" << endl;
- }
-
-
- A(int xx, int yy)
- {
- cout << "constructor" << endl;
-
- x = xx;
- y = yy;
- }
-
- void print()
- {
- cout << x << "," << y << endl;
- }
- };
-
- int main()
- {
- A a1(1, 2); // 初始化
-
- A(3, 4).print(); // 临时对象
-
- A a2; // 没有指定参数
- a2.print();
-
- A a3 = A(5, 6); // 这里只有一个对象啊, 所以只调用一次构造函数
-
-
- A m[4] = {A(7, 8), A(9, 10), A(11, 12)}; // 调用构造函数4次, 而不是8次
-
-
- int size = sizeof(m) / sizeof(m[0]);
- int i = 0;
- for(i = 0; i < size; i++)
- {
- m[i].print();
- }
-
- return 0;
- }
结果为:
constructor
constructor
3,4
constructor0
-858993460,-858993460
constructor
constructor
constructor
constructor
constructor0
7,8
9,10
11,12
0,0
一个小问题: 上面程序中, 用户不写默认构造函数可以吗? 不可以, 这样编译会出错。 当且仅当类中没有构造函数的时候, 编译器会为它创建一个, 所以下面程序是对的:
- #include <iostream>
- using namespace std;
-
- class A
- {
- };
-
- int main()
- {
- A a1;
- return 0;
- }