| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1625 人关注过本帖
标题:这个题目是不是有问题?
取消只看楼主 加入收藏
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
结帖率:90.38%
收藏
已结贴  问题点数:9 回复次数:1 
这个题目是不是有问题?
题目如下:

下面是一个非常简单的类定义:
程序代码:
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编辑过]

搜索更多相关主题的帖子: 参数 Person 构造函数 const string 
2021-01-18 18:35
hffjhhh
Rank: 1
等 级:新手上路
帖 子:127
专家分:7
注 册:2019-4-10
收藏
得分:0 
[quote]以下是引用rjsp在2021-1-18 22:49:28的发言:

估计是这个意思
#include <iostream>
#include <string>
#include <cstring>
using namespace std;

class Person{
private:
    static const size_t 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;
};

Person::Person(const string &ln,const char *fn)
{
    lname=ln;
    strncpy(fname,fn,LIMIT-1);
    fname[LIMIT-1]='\0';
}

void Person::show() const
{
    std::cout << "题目没交代Show要干什么: " << lname << ", " << fname;
}

void Person::FormalShow() const
{
    std::cout << "题目没交代FormalShow要干什么: " << lname << ", " << fname;
}

int main( void )
{
    Person one;
    Person two("iryth");
    Person three("iryth","asd");

    one.show();
    cout<<endl;
    one.FormalShow();
    cout<<endl;

    two.show();
    cout<<endl;
    two.FormalShow();
    cout<<endl;

    three.show();
    cout<<endl;
    three.FormalShow();
    cout<<endl;
}
[quote]
如果将这行:
Person(const string &ln,const char *fn="Heyyou");

改为如下:
Person(const string &ln,const char *fn);

为什么出现这个错误?
[Error] no matching function for call to 'Person::Person(const char [6])'



另外如果将这行
char fname[LIMIT];

改为如下:
const char fname[LIMIT];

为什么出现这个错误?
[Error] uninitialized const member in 'const char [25]' [-fpermissive]

[此贴子已经被作者于2021-1-20 00:11编辑过]

2021-01-20 00:10
快速回复:这个题目是不是有问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016808 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved