data.h
#pragma once
#include <stdio.h>
#include <string>
class TData
{
private:
int day_;
int month_;
int year_;
char* msg;
public:
static int count;
void set_data(const int day, const int month, const int year)
{
this->day_ = day;
this->month_ = month;
this->year_ = year;
}
void get_data();
TData();
TData(int day, int month, int year);
~TData();
inline int get_year();
friend int get_day(TData data);
int get_mouth() const;
void set_msg(const char * msg);
void showMessage();
TData(TData& data);
};
inline int TData::get_year()
{
return this->year_;
}
data.cpp
#include "data.h"
int TData::count = 0;
TData::~TData()
{
delete[] this->msg;
printf("执行析构函数!\n");
}
TData::TData()
{
this->day_ = 30;
this->month_ = 3;
this->year_ = 2024;
this->msg = new char[256];
memset(this->msg, 0, sizeof(this->msg));
printf("执行构造函数1\n");
count ++;
}
TData::TData(int day, int month, int year)
{
this->day_ = day;
this->month_ = month;
this->year_ = year;
printf("执行构造函数2\n");
count ++;
this->msg = new char[256];
memset(this->msg, 0, sizeof(this->msg));
}
void TData::get_data()
{
printf("%d年%d月%d日\n", this->year_, this->month_, this->day_);
return;
}
int TData::get_mouth() const
{
return this->month_;
}
void TData::set_msg(const char* msg)
{
strcpy_s(this->msg, 256, msg);
}
void TData:: showMessage()
{
printf("打印的msg为:%s\n", this->msg);
}
TData::TData(TData& data)
{
this->msg = new char[256];
memset(this->msg, 0, sizeof(this->msg));
strcpy_s(this->msg, 256, data.msg);
}
Main.cpp
#include "data.h"
int get_day(TData data)
{
return data.day_;
}
void Myfunction()
{
TData data(21,2,1999);
printf("Myfunction执行完毕!\n");
printf("打印内联函数:%d\n", data.get_year());
printf("打印友元函数的内容%d\n", get_day(data));
const TData data2(31,3,2000);
printf("调用const修饰过的函数:%d\n", data2.get_mouth());
printf("类被初始化的次数:%d\n", TData::count);
TData& data3 = data;
printf("类的引用%d\n", data3.get_year());
TData data4 = data;
printf("类的复制%d\n", data4.get_year());
TData data5;
data5.set_msg("好好学习!");
TData data6 = data5;
data5.set_msg("asdasdasd");
data6.showMessage();
return;
}
int main(){
Myfunction();
getchar();
return 0;
}