第10章 对象和类
第10章 对象和类
第2题
下面是一个非常简单的类定义
#ifndef PERSON_H_
#define PERSON_H_
#include <iostream>
using namespace std;
#include <string>
class Person
{
private:
static const int LIMIT = 25;
string lname; // Person的姓
char fname[LIMIT]; // Person的名
public:
Person(){lname = ""; fname[0] = '\0';}
Person(const string &ln , const char * fn = "Heyyou");
void show() const; // 先显示名, 再显示姓
void formalShow() const; // 先显示姓, 再显示名
};
#endif
请提供未定义的方法的代码, 以完成这个类。
源文件Person.cpp
#include "person.h"
Person::Person(const string &ln , const char * fn)
{
lname = ln;
strcpy(fname,fn);
}
void Person::show() const
{
if(lname == "" && fname[0] == '\0')
{
cout << "No Name." << endl;
}else
{
cout << "Person Name: " << fname << "." << lname << endl;
}
}
void Person::formalShow() const
{
if(lname == "" && fname[0] == '\0')
{
cout << "No Name." << endl;
}else
{
cout << "Person Name: " << lname << "." << fname << endl;
}
}
主函数
#include "person.h"
#include <iostream>
int main(int argc, char const *argv[])
{
Person one;
Person two("Swythe");
Person three("Bob","Green");
cout << endl;
one.formalShow();
two.formalShow();
three.formalShow();
system("pause");
return 0;
}
第8题
- 可以将简单列表描述如下。
- 可存储0或多个某种类型的列表
- 可创建空列表
- 可在列表中添加数据项
- 可确定列表是否为空
- 可确定列表是否已满
- 可访问列表中的每一个数据项, 并对它执行某种操作。
应使用通用概念来表达创建列表、在列表中添加数据项等操作。 对于访问数据项以及执行操作, 通常应使用以函数指针作为参数的函数类处理。
void visit(void (*pf)(Item &));
List.h头文件
#ifndef LIST_H_
#define LIST_H_
#include <iostream>
typedef unsigned long Item;
void visit_item(Item &);
class List
{
private:
enum {MAX = 10};
Item items[MAX]; // 存储列表元素
int top;
public:
List();
bool isempty() const;
bool isfull() const;
bool add(const Item & item);
void visit(void (*pf)(Item &));
};
#endif
list.cpp源文件
#include "list.h"
List::List()
{
this->top = 0;
}
bool List::isempty() const
{
return top == 0;
}
bool List::isfull() const
{
return top == MAX;
}
bool List::add(const Item &item)
{
if(top < MAX)
{
items[top++] = item;
return true;
}else
return false;
}
void List::visit(void (*pf)(Item &))
{
for(int i =0; i < top; i++)
{
pf(items[i]);
}
}
void visit_item(Item & item)
{
std::cout << "The Item's info" << item << std::endl;
}
主文件:
#include <iostream>
#include "list.h"
using namespace std;
int main(int argc, char const *argv[])
{
List list;
Item item = 0;
cout << "Enter the unsinged long number: " ;
cin >> item;
while(item != 0)
{
cin.get();
list.add(item);
cout << "Enter the unsinged long number: " ;
cin >> item;
}
cout << "Now end of add element, start to visit:" << endl;
list.visit(visit_item);
system("");
return 0;
}