题目:
下面是一个头文件。
const int Len = 40;
struct golf
{
char fullname[Len];
int handicap;
};
void setgolf(golf& g, const char* name, int hc);
int setgolf(golf& g);
void showgolf(const golf& g);
注意到setgolf()被重载,可以这样使用其第一个版本:
golf ann;
setgolf(ann,"Ann Birdfree",24);
上述函数调用踢狗了存储在ann结构中的信息。可以这样使用第二个版本:
golf andy;
setgolf(andy);
上述函数要求用户输入姓名和等级,并将它们存储在andy结构中,这个函数可以在内部使用第一个版本。
根据这个头文件,创建一个多文件程序。其中的一个文件名为golf.cpp,它踢狗了与头文件中的原型匹配的函数定义;另一个文件应包含main(),并演示原型化函数的所有特性。列入,包含一个让用户输入的循环,并使用输入的数据来填充一个由golf结构组成的数组,数组被填满或用户将高尔夫选手的姓名设置为空字符串时,循环将结束。main()函数之呢使用头文件中的函数来访问golf结构。
源代码:
test.cpp
#include "test.h"
int max = 0;
int main()
{
golf ann;
golf andy[10];
setgolf(ann, "Ann Birdfree", 24);
while (max < MAX && setgolf(andy[max]))
{
max++;
}
showgolf(ann);
for (int i = 0; i < max; i++)
{
showgolf(andy[i]);
}
return 0;
}
test_function.cpp
#define _CRT_SECURE_NO_WARNINGS
#include "test.h"
#include <cstring>
#include <iostream>
void setgolf(golf& g, const char* name, int hc)
{
strcpy(g.fullname, name);
g.handicap = hc;
}
int setgolf(golf& g)
{
std::cout << "请输入fullname: ";
std::cin.get(g.fullname, Len).get();
if (!std::cin)
return 0;
std::cout << "请输入handicap: ";
(std::cin >> g.handicap).get();
return 1;
}
void showgolf(const golf& g)
{
std::cout << "fullname: " << g.fullname << " handicap: " << g.handicap << std::endl;
}
test.h
const int MAX = 10;
const int Len = 40;
struct golf
{
char fullname[Len];
int handicap;
};
void setgolf(golf& g, const char* name, int hc);
int setgolf(golf& g);
void showgolf(const golf& g);
演示效果:
任务升级:使用正确的golf类声明替换上面的代码在上面的基础上用带合适参数的构造函数替换
void setgolf(golf& g, const char* name, int hc),以提供初始值。保留setgolf()的交互版本,但要用构造函数来实现它(列如,setgolf()的代码应该获得数据,将数据传递给构建函数来创建一个临时对象,并肩其值赋给调用对象)
源代码:
test.h
class golf
{
private:
static const int Len = 40;
char fullname[Len];
int handicap;
public:
void setgolf( const char* name, int hc);
int setgolf();
void showgolf() const;
};
test.cpp
#include "test.h"
int max = 0;
int main()
{
golf ann;
golf andy[10];
ann.setgolf("Ann Birdfree", 24);
andy->setgolf();
ann.showgolf();
andy->showgolf();
return 0;
}
test_function.cpp
#define _CRT_SECURE_NO_WARNINGS
#include "test.h"
#include <cstring>
#include <iostream>
void golf::setgolf(const char* name, int hc)
{
strcpy(this->fullname, name);
this->handicap = hc;
}
int golf::setgolf()
{
std::cout << "请输入fullname: ";
std::cin.get(this->fullname, Len).get();
if (!std::cin)
return 0;
std::cout << "请输入handicap: ";
(std::cin >> this->handicap).get();
return 1;
}
void golf::showgolf() const
{
std::cout << "fullname: " << this->fullname << " handicap: " << this->handicap << std::endl;
}
演示效果:
如果朋友你感觉文章的内容对你有帮助,可以点赞,关注文章和专栏以及关注我哈,嘿嘿嘿我会定期更新文章的,谢谢朋友你的支持哈