什么时候用C ++调用构造函数?

在这里,我们将看到调用构造函数的时间。这里的构造函数是不同类型的。全局,局部,静态局部,动态。

对于全局对象,在进入主函数之前先调用构造函数。

示例

#include <iostream>

using namespace std;

class MyClass {

   public:

      MyClass() {

         cout << "Calling Constructor" << endl;

      }

};

MyClass myObj; //Global object

int main() {

   cout << "Inside Main";

}

输出结果

Calling Constructor

Inside Main

如果对象是非静态的,则当执行到达创建对象的位置时,将调用构造函数。

示例

#include <iostream>

using namespace std;

class MyClass {

   public:

      MyClass() {

         cout << "Calling Constructor" << endl;

      }

};

int main() {

   cout << "Inside Main\n";

   MyClass myObj; //Local object

   cout << "After creating object";

}

输出结果

Inside Main

Calling Constructor

After creating object

当对象是局部静态对象时,仅第一次调用其构造函数,如果再次使用相同的函数,则不会受影响。

示例

#include <iostream>

using namespace std;

class MyClass {

   public:

      MyClass() {

         cout << "Calling Constructor" << endl;

      }

};

void func() {

   static MyClass myObj; //Local static object

}

int main() {

   cout << "Inside Main\n";

   func();

   cout << "After creating object\n";

   func();

   cout << "After second time";

}

输出结果

Inside Main

Calling Constructor

After creating object

After second time

最后,对于动态对象,当使用new运算符创建对象时,将调用构造函数。

示例

#include <iostream>

using namespace std;

class MyClass {

   public:

      MyClass() {

         cout << "Calling Constructor" << endl;

      }

};

int main() {

   cout << "Inside Main\n";

   MyClass *ptr;

   cout << "Declaring pointer\n";

   ptr = new MyClass;

   cout << "After creating dynamic object";

}

输出结果

Inside Main

Declaring pointer

Calling Constructor

After creating dynamic object

以上是 什么时候用C ++调用构造函数? 的全部内容, 来源链接: utcz.com/z/335288.html

回到顶部