C++ 面向对象学习2 构造方法

时间:2023-03-08 22:25:37
C++ 面向对象学习2 构造方法

Date.h

#ifndef DATE_H
#define DATE_H class Date{
public:
Date(int d=,int m=,int y=);//自定义了构造方法 会覆盖掉默认的无参构造方法
void setDay(int d);
void print();
private:
int d;
int m;
int y; };
#endif

Date.cpp

#include "stdafx.h"
#include <iostream>
#include "Date.h"
using namespace std; Date::Date(int d, int m, int y){
cout<<"construactor me"<<endl;
this->d=d;//和java一样 这里也有this 有两种使用方式
(*this).m=m;
(*this).y=y;
} void Date::setDay(int d){
this->d=d;
} void Date::print(){
cout<<y<<"-"<<m<<"-"<<d<<endl;
}

Test.cpp

#include "stdafx.h"
#include "Date.h" int _tmain(int argc, _TCHAR* argv[])
{
//由于我没有显式的写出一个默认的构造方法
//而且我还自定义了一个自己的构造方法
//那么自己的构造方法会覆盖掉默认的构造方法的 Date d1;//显示constructor me
//虽然这里创建对象的时候没有写参数 但是并不是调用的默认无参构造方法
//因为我为我的构造方法设置了默认值 所以这里可以不给出
d1.print(); Date d2(,,);//调用自己的构造方法
d2.print();//1993-5-5
return ;
}

=========================================

Date.h

#ifndef DATE_H
#define DATE_H class Date{
public:
Date();
Date(int d,int m,int y);//自定义了构造方法 会覆盖掉默认的无参构造方法
void setDay(int d);
void print();
private:
int d;
int m;
int y;
};
#endif

Date.cpp

#include "stdafx.h"
#include <iostream>
#include "Date.h"
using namespace std; Date::Date(){
cout<<"constructor me"<<endl;
this->d=;
this->m=;
this->y=;
} Date::Date(int d, int m, int y){
cout<<"construactor me"<<endl;
this->d=d;//和java一样 这里也有this 有两种使用方式
(*this).m=m;
(*this).y=y;
} void Date::setDay(int d){
this->d=d;
} void Date::print(){
cout<<y<<"-"<<m<<"-"<<d<<endl;
}

Test

#include "stdafx.h"
#include "Date.h" int _tmain(int argc, _TCHAR* argv[])
{
//假如没有自定义自己的构造方法 Date d1就是调用系统默认的无参数构造方法
//再使用了自己的构造方法的情况下 还想调用无参数的构造方法 就只能再写一个无参数的构造方法
//当然了 这两个构造方法都是自己的方法
Date d1;//显示constructor me
d1.print();//0-0-0 Date d2(,,);//调用自己的有参构造方法
d2.print();//1993-5-5
return ;
}