C++ 中什么时候调用构造函数?
在本文中,我们将讨论构造函数的调用时机。本文中包含不同类型的构造函数,包括全局、局部、静态局部和动态构造函数。
对于全局对象,构造函数会在进入 main 函数之前被调用。
示例
#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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP