注册 登录
编程论坛 C++教室

刚开始自学C++,请问为什么构造函数在类中定义过了,后面又在类外写了一遍(红色加粗部分)?

anhaoAH 发布于 2020-05-19 19:39, 2378 次点击
#include<iostream>

using namespace std;

class Date
{
public:
    Date();
    Date(int y,int m,int d);
    void showDate();
private:
    int year;
    int month;
    int day;
};
Date::Date()
{
    year=2000;
    month=4;
    day=28;
}
Date::Date(int y,int m,int d)
{
    year=y;
    month=m;
    day=d;
}

inline void Date::showDate()
{
    cout<<year<<"."<<month<<"."<<day<<endl;
}
int main()
{
    Date date1;
    cout<<"Date1 output:"<<endl;
    date1.showDate();
    Date date2(2002,11,14);
    cout<<"Date2 output:"<<endl;
    date2.showDate();
    return 0;
}
不知道我到底表达清楚没,请见谅求解答
5 回复
#2
zbjzbj2020-05-19 20:40
前面是函数定义,只定义函数类型和变量类型。后面是函数体,实现函数的功能,只是这函数体比较简单。书面上说,前面是函数头,后面是函数实现。
#3
rjsp2020-05-19 20:43
首先,那不是定义。上面是声明,下面才是定义。
初学的话,先不说这些,我只问问你,若无红色的那段代码的话,你认为程序应该输出什么?
#4
anhaoAH2020-05-20 10:39
回复 3楼 rjsp
额,我试了下删掉那里,显然不行,就是没明白它为啥要这样写
#5
专业课的小白2020-05-25 15:14
回复 4楼 anhaoAH
那只是一种写法,你也可以不用声明,直接在类内写函数体。
因为你的函数体是在类外写的,所以要在类内提前声明一下。
那个不是重复写,在类内那是一条语句,那里是有分号的。
但是,在内外的是一个函数。
#6
专业课的小白2020-05-25 15:16
回复 5楼 专业课的小白
我写错了,在最后的一句里,是类外不是内外。
1