一些构造函数代码之间的 C++ 区别

标签 c++

代码是什么:

class Time {
    private:
        int hours;
        int minutes;
        int seconds;
    public:
        Time() { hours = 0; minutes = 0; seconds = 0; }
};

不同于:

class Time {
    public:
        Time();

    private:
        int hours;
        int minutes;
        int seconds;
};

Time::Time() {
    hours = 0;
    minutes = 0;
    seconds = 0;            
}

抱歉,如果问题过于简单,但我是 C++ 的新手。我运行了这两个代码,但没有发现任何区别...

最佳答案

class Time {
    private:
        int hours;
        int minutes;
        int seconds;
    public:
        Time() { hours = 0; minutes = 0; seconds = 0; }
};

此代码声明并定义了 Time 类的默认构造函数。

class Time {
    public:
        Time();

    private:
        int hours;
        int minutes;
        int seconds;
};

Time::Time() {
    hours = 0;
    minutes = 0;
    seconds = 0;            
}

此代码在类定义中声明了 Time 类的默认构造函数,然后在类定义之外对其进行了定义。通常两者会被分成Time.hTime.cpp,如下所示:

Time.h

class Time {
    public:
        Time();

    private:
        int hours;
        int minutes;
        int seconds;
};

时间.cpp

#include "Time.h";

Time::Time() {
    hours = 0;
    minutes = 0;
    seconds = 0;            
}

关于一些构造函数代码之间的 C++ 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26921858/

相关文章:

c++ - 需要 : A popup window without a taskbar icon

c++ - 从多态容器中提取已知接口(interface)时的奇怪行为

c++ - 我们不能混合使用 g++ 和 clang++ 编译的对象(或库)吗?至少在 Mac 上?

c++ - C++ 引用的生命周期

c++ - QListWidget add Item() + setItemWidget() 内存泄漏

c++ - Matlab的fmincon函数在C++中的实现

c++ - 是否有 `notify_one()` 的 `std::condition_variable` 队列?

c++ - 具有不同类型和操作可供选择的 C++ 计算器

c++ - 跨平台动态链接(Windows 到 Linux)

c++ - Cmake 中包含库和目录的共享对象