这个题目是不是有问题?
题目如下:下面是一个非常简单的类定义:
程序代码:
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编辑过]