#include <iostream> using namespace std; class CDate { void Set(int m, int d, int y ) { month = m ; day = d ; year = y ; } int IsLeapYear() { return (year%4 == 0 && year%100 != 0)||(year%400 == 0); } public: void Print() { cout<<month<<"/"<<day<<"/"<<year<<endl; } private: int month; int day; int year; }; int main() { CDate a; -----------------------------------------------------① a.Set(5,1,2022) ; a.Print(); return 0; } 问题一:以上程序编译能通过吗,为什么,应该如何改正? 问题二:类CDate中分别有哪些成员函数和成员变量,它们分别属于哪种访问权限? 问题三:①处语句的意思是什么?
时间: 2023-10-22 13:05:01 浏览: 117
问题一:以上程序编译会报错,因为在main函数中创建了一个CDate对象a,但是CDate类中没有默认构造函数,也没有提供带参数的构造函数。因此,需要在CDate类中添加一个默认构造函数或者提供带参数的构造函数才能通过编译。
修改后的代码如下:
```
#include <iostream>
using namespace std;
class CDate {
public:
CDate() {} // 添加默认构造函数
void Set(int m, int d, int y ) {
month = m ;
day = d ;
year = y ;
}
int IsLeapYear() {
return (year%4 == 0 && year%100 != 0)||(year%400 == 0);
}
void Print() {
cout<<month<<"/"<<day<<"/"<<year<<endl;
}
private:
int month;
int day;
int year;
};
int main() {
CDate a; // 创建CDate对象a
a.Set(5,1,2022) ;
a.Print();
return 0;
}
```
问题二:类CDate中有三个成员变量:month、day、year;有四个成员函数:Set、IsLeapYear、Print和默认构造函数。其中,Set和IsLeapYear函数是私有成员函数,Print和默认构造函数是公有成员函数,month、day、year是私有成员变量。
问题三:①处的语句是创建一个CDate对象a,并调用Set函数设置日期为5月1日2022年。
阅读全文