这个题目是不是有问题?
题目如下:下面是一个非常简单的类定义:
程序代码:class Person{
private:
static const LIMIT=25;
string lname;
char fname[LIMIT];
public:
Person(){
lname="";
fname[0]='\0';
}
Person(const string &ln,const char *fn="Heyyou");
void show()const;
void FormalShow()const;
};它使用了一个string对象和一个字符数组,让您能够比较它们的用法,请提供未定义的方法的代码,以完成这个类的实现,再编写一个使用这个类的程序,它使用了三钟可能的构造函数的调用(没有参数,一个参数和两个参数)以及两种显示方法。下面是一个使用这些构造函数和方法的例子:
程序代码: Person one;
person two("iryth");
Person three("iryth","asd");
one.show();
cout<<endl;
one.FormalShow();以上就是题目的描述,但我有以下几个问题:
问题1:这行语句是不是少了个int
static const LIMIT=25;
应修改为这样:
static const int LIMIT=25;
问题2:这行默认构造函数的声明中是不是应该删除函数体?
Person(){
lname="";
fname[0]='\0';
}改为这样声明:
Person();
然后在默认构造函数的实现中再来添加该函数体。
问题3:下面这行语句,
Person(const string &ln,const char *fn="Heyyou");
在默认构造函数的声明中,可以直接对参数进行初始化吗?
是不是应该修改为下面这样?
Person(const string &ln,const char *fn);
问题4:题目要求提供三种可能的构造函数调用,是不是要分别添加三个方法的实现?即:
分别为默认构造函数的实现,带一个参数的构造函数的实现,带二个参数的构造函数的实现。
但是一个Person类中可以同时包含两个构造函数的实现吗?
请就以上4个问题分别解答。
代码如下,错误一大堆:
程序代码:#include<iostream>
#include<string>
using namespace std;
class Person{
private:
static const int LIMIT=25;
string lname;
const char fname[LIMIT];
public:
Person();
Person(const string &ln,const char *fn);
void show()const;
void FormalShow()const;
};
Person::Person(){
lname="";
fname[0]='\0';
}
Person::Person(const string &ln,const char *fn){
lname=ln;
fname=fn;
}
Person::Person(const string &ln){
lname=ln;
}
Person::show()const{
cout<<"包含2个参数:"<<endl<<lname<<endl<<fname<<endl;
}
Person::FormalShow() const{
cout<<"包含1个参数:"<<endl<<lname<<endl;
}
int main(){
Person one;
person two("iryth");
Person three("iryth","asd");
one.show();
one.FormalShow();
return 0;
}[此贴子已经被作者于2021-1-18 18:36编辑过]


