标题:刚开始自学C++,请问为什么构造函数在类中定义过了,后面又在类外写了一遍( ...
只看楼主
anhaoAH
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2019-12-18
结帖率:75%
 问题点数:0 回复次数:5 
刚开始自学C++,请问为什么构造函数在类中定义过了,后面又在类外写了一遍(红色加粗部分)?
#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;
}
不知道我到底表达清楚没,请见谅求解答
搜索更多相关主题的帖子: Date cout 构造函数 year int 
2020-05-19 19:39
zbjzbj
Rank: 12Rank: 12Rank: 12
来 自:郑州
等 级:贵宾
威 望:52
帖 子:620
专家分:3020
注 册:2011-4-22
得分:0 
前面是函数定义,只定义函数类型和变量类型。后面是函数体,实现函数的功能,只是这函数体比较简单。书面上说,前面是函数头,后面是函数实现。
2020-05-19 20:40
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
首先,那不是定义。上面是声明,下面才是定义。
初学的话,先不说这些,我只问问你,若无红色的那段代码的话,你认为程序应该输出什么?
2020-05-19 20:43
anhaoAH
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2019-12-18
得分:0 
回复 3楼 rjsp
额,我试了下删掉那里,显然不行,就是没明白它为啥要这样写
2020-05-20 10:39
专业课的小白
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2019-12-17
得分:0 
回复 4楼 anhaoAH
那只是一种写法,你也可以不用声明,直接在类内写函数体。
因为你的函数体是在类外写的,所以要在类内提前声明一下。
那个不是重复写,在类内那是一条语句,那里是有分号的。
但是,在内外的是一个函数。
2020-05-25 15:14
专业课的小白
Rank: 1
等 级:新手上路
威 望:1
帖 子:56
专家分:0
注 册:2019-12-17
得分:0 
回复 5楼 专业课的小白
我写错了,在最后的一句里,是类外不是内外。
2020-05-25 15:16



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-501687-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.307026 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved