为什么我可以在类中声明构造函数

-1 c++

考虑这个链接.看到这段代码:

 class MyClass
    {
    public:
        MyClass();
        ~MyClass();

    private:
        int _a;
    };

    MyClass::MyClass()
    {
    }

    MyClass::~MyClass()
    {
    }
Run Code Online (Sandbox Code Playgroud)

我们可以在类中声明构造函数.
为什么我可以在类中声明构造函数以及为什么要这样做?

Pie*_*aud 14

你不能在类中声明构造函数.你在谈论构造函数定义.

class MyClass
{
public:
    MyClass(); // declaration

};

MyClass::MyClass() // definition
{
}
Run Code Online (Sandbox Code Playgroud)

你应该读这个.

您应该在类外部定义构造函数的主要原因是为了提高可读性.在Header文件中声明您的类并在源文件中定义它更清楚.您可以将此规则应用于您班级的任何成员.


标准的一点引用:

12.1构造函数

struct S {
    S();   // declares the constructor
};

S::S() { } // defines the constructor
Run Code Online (Sandbox Code Playgroud)


jua*_*nza 7

你不能.这是构造函数声明,它必须在类定义中:

// MyClass definition, possibly in .h file
class MyClass
{
 public:
  MyClass(); // default constructor declaration
  ...
};
Run Code Online (Sandbox Code Playgroud)

这是构造函数的定义

 // MyClass default constructor definition, possibly in .cpp file
MyClass::MyClass() { }
Run Code Online (Sandbox Code Playgroud)

你所指的是构造函数的定义.您可以在类定义之外定义它,以允许您将一个与另一个解耦.通常这意味着您将类定义放在头文件中,由客户端代码包含,并将构造函数定义(以及其他类成员函数定义)放在要编译的实现文件中.这样,代码的用户对所述定义没有编译时依赖性.


dun*_*123 6

在类声明之外定义构造函数(或任何成员函数)的主要原因是,您可以拥有头文件和实现文件.这使您的代码更清晰,并允许您将类的接口(头文件)分发,而不提供实现细节.