如何在C++中定义类外的构造函数
构造函数是一种特殊类型的成员函数,其任务是初始化其类的对象。它没有返回类型,因此不能使用 return 关键字 ,并且在对象创建时隐式调用。
- 构造函数也用于解决初始化问题。
- 它在对象创建后调用。
- 同类名。
类外定义构造函数
构造函数可以在类外定义,但必须在类内声明。在这里,您将使用作用域解析运算符。
定义类外构造函数的语法:
class class_name {
public:
class_name();
};
// 类外构造函数定义
class_name::class_name()
{
}
例子:
// C++程序定义
// 类外构造函数
#include <iostream>
using namespace std;
class GeeksForGeeks {
public:
int x,y;
// 构造函数声明
GeeksForGeeks(int,int);
// 打印值的函数
void show_x_y() {
cout << x << " " << y << endl;
}
};
// 构造函数定义
GeeksForGeeks::GeeksForGeeks(int a,int b)
{
x = a;
y = b;
cout << "Constructor called" << endl;
}
// 驱动器代码
int main()
{
GeeksForGeeks obj(2,3);
obj.show_x_y();
return 0;
}
输出
Constructor called
2 3
时间复杂性: O(1)
辅助空间: O(1)
类外定义构造函数的原因
以下是更喜欢在类外定义构造函数的原因之一:
- 无编译时依赖性: 可以将类定义放在头文件中,将构造函数定义放在要编译的实现文件中。
- 可读性更强、代码更清晰: 将构造函数定义在类外的主要原因是为了可读性。由于可以将声明分为头文件和将实现分为源文件,因此更加清晰。
例子: GeeksForGeeks.h
//头文件
//将此代码保存为.h扩展名
//例如- GeeksForGeeks.h
#include <bits/stdc++.h>
using namespace std;
class ClassG {
public:
int a,b;
// 构造函数声明
ClassG();
// 打印值的函数
void show()
{
cout << a << " " << b;
}
};
时间复杂度: O(1)
辅助空间: O(1)
文件:
//添加GeeksForGeeks.h文件
# include"GeeksForGeeks.h"
# include<bits/stdc++.h>
using namespace std;
// 构造函数定义
ClassG::ClassG()
{
a = 45;
b = 23;
}
// 驱动器代码
int main()
{
// 这将调用
// 构造函数
ClassG obj;
// 函数调用
obj.show();
}
输出:
45 23
时间复杂度: O(1)
辅助空间: O(1)