首页 > 解决方案 > 关于默认构造函数,C++ OOP 中的对象初始化/使用

问题描述

我最近开始学习 C++ 中的 OOP,并开始解决有关它的示例任务。我想在为其CStudent创建默认构造函数后实例化该类的对象。但是编译器无法编译代码。我想问这是为什么?

标签: c++oopobjectconstructorinitialization

解决方案


当你在课堂上写作时:

CStudent();
CStudent(string name, string fn);

...您只声明两个构造函数,一个默认(不带参数)和一个带两个字符串。

声明它们之后,您需要定义它们,就像定义方法一样,getName或者getAverage

// Outside of the declaration of the class
CStudent::CStudent() { }

// Use member initializer list if you can
CStudent::CStudent(std::string name, string fn) : 
    name(std::move(name)), fn(std::move(fn)) { }

在 C++ 中,您还可以在类中声明它们时定义它们:

class CStudent {
// ...
public:
    CStudent() { }
    CStudent(std::string name, string fn) : 
        name(std::move(name)), fn(std::move(fn)) { }
// ...
};

从 C++11 开始,您可以让编译器为您生成默认构造函数:

// Inside the class declaration
CStudent() = default;

推荐阅读