{ Student p1,p2,p3; p1.age=30; . . . return 0; }
答:语句“pl.age=30;”编译出现错误,因为age是私有数据成员(private),不能被直接访问。
【3.28】 指出下列程序中的错误,并说明为什么。
#include
void printStu(); void setSno(int d); };
void printStu();
{ cout<<\ cout<<\}
void setSno(int s) { sno=s; }
void setAge(int a) { age=a; } int main() { Student lin;
lin.setSno(20021); lin.setAge(20); lin.printStu(); }
答:有三个错误:
第一,printStu()和setSno(int d)两个成员函数没有用public定义,在默认情况下属于私有函数,不允许外部函数对对象进行操作;
第二,成员函数printStu()和setSno(int d)在类外定义,应加上类名“Student::”
第三,void setAge(int a)应在类中说明,并在类外定义,应加上类名“Student::”
【3.29】 指出下列程序中的错误,并说明为什么。
#include
答:有两个错误:
第一:构造函数名应与类名相同,“Piont()”应改为“Point()” ; 第二,构造函数Point()是私有的,所以语句“Point cpoint;”执行时出现错误,原因是类Point构造函数私有,创建对象cpoint就不能调用它。 【3.30】 下面是一个计算器类的定义,请完成该类成员函数的实现。
class counter{ public:
counter(int number);
void increment(); void decrement(); int getvalue(); int print(); private: int value; };
答:完整程序如下 class counter{ public:
counter(int number); void increment(); void decrement(); int getvalue(); int print(); private: int value; };
//成员函数的实现
counter::counter(int number) { value=number;}
void counter::increment()
//给原值加1 //给原值减1 //取得计数器值 //显示计数 { value++;}
void counter::decrement() { value--;}
int counter::getvalue() { return value;} int counter::print()
{ cout<<”value is “< 【3.31】 根据注释语句的提示,实现类Date的成员函数。 #include void printDate(); //显示日期 void setDay(int d); //设置日的值 void setMonth(int m); //设置月的值 void setYear(int y); //设置年的值 private: int day,month,year; }; int main() { Date testDay; testDay.setDay(5); testDay.setMonth(10); testDay.setYear(2003); testDay.printDate(); return 0; } 答:类Date的成员函数如下 void Date::printDate() { cout<<\ cout< void Date::setDay(int d) {day=d;} void Date::setMonth(int m) {month=m;} void Date::setYear(int y) {year=y;} 【3.32】 建立类cylinder,cylinder的构造函数被传递了两个double值,分别