第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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· .NET Core 中如何实现缓存的预热?
· 三行代码完成国际化适配,妙~啊~
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?