如何在C++中定义类外的构造函数

如何在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)

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程