• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LOFLY
终其一生,编织快乐
博客园    首页    新随笔    联系   管理    订阅  订阅

第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;
}
posted @ 2022-09-04 14:36  编织快乐  阅读(53)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3