C++——类构造函数与析构函数的使用方法
2021-05-08 14:55:36 Author: www.freebuf.com(查看原文) 阅读量:123 收藏

1.完成下面程序的功能:

(1)创建无参的构造函数,为成员变量提供默认值(2021,4,26)
(2)创建有参的构造函数,为成员变量赋初值;
(3)将有参的构造函数修改为用参数初始化列表赋初值;
(4)创建析构函数,输出析构对象的日期;
(5)使用无参的构造函数创建类对象MyDate1,判断当前年是否为闰年,并打印输出日期;
(6)使用有参的构造函数创建类对象MyDate2,初值为(2024,4,26),判断当前年是否为闰年,并打印输出日期;
(7)使用new动态创建类对象MyDate3,初值为(2040,4,26),判断当前年是否为闰年,并打印输出日期。
代码:

#include
using namespace std;
//定义MyDate日期类
class MyDate{
public:
MyDate(){year=2021;month=4;day=26;}
MyDate(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
//MyDate(int x,int y,int z):year(x),month(y),day(z){}
//设置年、月、日
bool setDate(int m,int d,int y=2021);
//判断当前年是否为闰年
bool isLeapYear(int y);
//打印输出日期
~MyDate()
{
cout<<"年:"<<year<<"月:"<<month<<"日:"<<day<<endl;
}
void printDate();
private:
int year,month,day;
};
//设置年、月、日
bool MyDate::setDate(int m,int d,int y)
{
if ((y>0) && (y<9999)) year=y;
else return false;
if ((m>0) && (m<13)) month=m;
else return false;
if ((d<1) || (d>31)) return false;
if (d<=28) {
day=d;
return true;
}
if (d==29) {
if (!isLeapYear(year))
if (m==2)
return false;
}
if (d==30)
if (m==2)
return false;
if (d==31)
if ((m==2)||(m==4)||(m==6)||(m==9)||(m==11))
return false;
day=d;
return true;
}
//判断当前年是否为闰年
bool MyDate::isLeapYear(int y)
{
return ((y%100 && y%4==0)||(y%400==0));
}
//打印输出日期
void MyDate::printDate()
{
cout<<"当前设置的日期为:"
<<year<<"年"
<<month<<"月"
<<day<<"日。"<<endl;
}
int main()
{
MyDate MyDate1;
if(MyDate1.isLeapYear(2021))
{
cout<<"2021是闰年"<<endl;
}else
{
cout<<"2021不是闰年"<<endl;
}
MyDate1.printDate();
MyDate MyDate2(2024,4,26);
if(MyDate2.isLeapYear(2024))
{
cout<<"2024是闰年"<<endl;
}else
{
cout<<"2024不是闰年"<<endl;
}
MyDate2.printDate();
MyDate* MyDate3=new MyDate(2040,4,26);
if(MyDate3->isLeapYear(2040))
{
cout<<"2040是闰年"<<endl;
}else
{
cout<<"2040不是闰年"<<endl;
}
MyDate3->printDate();
delete MyDate3;
return 0;
}

结果:
image.png

2.定义球类Globe,成员变量有半径,成员函数有对半径赋值和求体积。要求成员函数在类内定义。请设计类,并使用类。(包括无参与有参的构造函数和析构函数)

代码:
#include
using namespace std;
#define PI 3.14
class Globe
{
private:
double R;
public:
Globe(){}
Globe(double r)
{
R=r;
}
~Globe(){}
double calVolume()
{
return (4.0/3PIRRR);
}
};
int main()
{
int n;
cout<<"请输入球的半径:";
cin >> n;
Globe g1(n);
cout<<"球的半径为:"<<n<<endl;
cout<<"球的体积为:"<<g1.calVolume()<<endl;
return 0;
}

结果:
image.png

3.定义学生类Student,成员变量有学号,姓名,成绩(语文,数学,英文),成员函数有对成员变量赋值和求成绩的平均值,要求成员变量为私有的,成员函数在类外定义。设计类,并使用类。(包括无参与有参的构造函数和析构函数)

代码:

#include
#include
using namespace std;
class Student
{
private:
string number;
string name;
double yuwen;
double shuxue;
double yingyu;
public:
Student(){}
Student(string num,string nam,double yu,double shu,double ying);
double calAVG();
~Student(){}
};
Student::Student(string num,string nam,double yu,double shu,double ying)
{
number=num;
name=nam;
yuwen=yu;
shuxue=shu;
yingyu=ying;
}
double Student::calAVG()
{
return (yuwen+shuxue+yingyu)/3;
}
int main()
{
Student s1("123456789","张三",89.5,78.8,90.5);
cout<<"平均成绩为:"<<s1.calAVG()<<endl;
return 0;
}
结果:
image.png


文章来源: https://www.freebuf.com/articles/others-articles/272178.html
如有侵权请联系:admin#unsafe.sh