C++——一个简单的多文件具体例子
来源:互联网 发布:linux清除dns缓存命令 编辑:程序博客网 时间:2024/04/30 10:33
(From 九天雁翎)
Person.h
#include <map>#include <string>class Person{public:Person(const std::string &,const std::string &);Person(){}; void print(const std::string &) const; //声明一个const成员函数输出 void print(); void input(const std::string &,const std::string &);private: std::map<std::string,std::string> aperson;};
Person.cpp
#include "Person.h"#include <iostream>#include <iterator>#include <algorithm>Person::Person(const std::string &name,const std::string &adress) //一个构造函数{ aperson[name] = adress;}void Person::print(const std::string &name) const //定义了一个const成员函数,输出{ std::map<std::string,std::string>::const_iterator it = aperson.find(name); //在aperson中查找key name if(it != aperson.end()) //假如有就输出 { std::cout<<it->first<<"'s adress is "<<it->second<<std::endl; } else { std::cout<<"there is no this person called"<<name<<std::endl; }}void Person::print() //重载一个输出,没有参数就输出所有的值{ for(std::map<std::string,std::string>::iterator it =aperson.begin(); //遍历aperson it != aperson.end();++it) { std::cout<<it->first<<" in "<<it->second<<std::endl; }}void Person::input(const std::string &name, const std::string &adress) //用input管理输入{ aperson[name] = adress; //有就改名,没有就增加一个,利用map下标的特点}
这个类使用的方法具体可以参考下面,你也可以自己试试:
#include "Person.h"#include <string>int main() { Person abook("jack","Guanzhou"); abook.input("jim","Beijing"); abook.input("tom","Hunan"); abook.print("jack"); return 0;}
在这里注意,和以前说的不同的是,类的被分开放在两个文件中,而且,类中的函数都在类定义外面定义,这里这样做是因为既然要封装,那么类的使用者就没有必要知道第2个文件,知道第一个文件就够了,只要你详细说明了每个函数的实际用途,类的使用者可以不关系他的具体实现,节省时间和精力。这是雷同于C中编写不同的函数的程序员之间也不需要实际了解那个函数具体怎么实现的一样,C就是这样实现结构化编程的,而C++就是通过这样写类,来实现面向对象编程的。在类外定义类的成员函数,你必须指明,这个函数是某个类的函数,通过符号“::”,在上面的例子中很明显。另外,所谓的 const成员函数,表示这个函数不能更改类中的数据,在声明及定义中都必须加上const.public下的东西可以公共访问,所以被叫做一个类的接口,什么叫接口?就是和外部产生联系所需要的东西。private下的别人就不需要了解了,叫封装,也是一种黑盒原理。可以看到,这里有2个接口函数,print(),input();其中print()有一个重载版本。还有1个重载的构造函数。看名字都很好理解。数据中就定义了一个由2个string组成的map。这里把类的定义放在一个单独的头文件里面,所以都用了std::而没有用using namespace std,因为头文件中最好不要用这个。其实在小程序中倒也无所谓。
- C++——一个简单的多文件具体例子
- 浅谈C++类(2)--一个简单的多文件具体例子
- 简单介绍MVC,和一个具体的Mvc例子
- Linux C编程的一个小例子——实现一个简单的who命令(第一版)
- 一个简单的上传文件测试例子
- C#——一个简单的文件管理器
- c语言文件读写的一个例子
- 什么是构造函数注入(Constructor Injection)——一个具体的依赖注入例子
- 一个ldap身份认证的具体例子
- SVM分类的一个具体例子
- 一个简单的例子
- c的简单例子
- 一个最简单的com组件的例子(C++)
- [C#] 一个简单的C#多线程间同步的例子
- 一个简单的调用脚本文件的例子
- Android读写文件的一个简单入门的例子
- 一个简单的生成静态文件的例子
- 【转】一个用Visual C#做组件的简单例子
- Java持久层的三种查询方式
- Server Application Unavailable出现的原因及解决方案集锦
- 监听键盘事件
- poj 2001 Shortest Prefixes(Trie树)
- Ucos优先级位图算法详解
- C++——一个简单的多文件具体例子
- rqnoj-255
- HDOJ 2048 神、上帝以及老天爷(错排)
- jQuery.Validate验证库 --zm2714
- CSS框架960Grid
- jquery.validate1.9.0前台验证使用
- getdtsno
- jQuery.Validate验证库知识点
- 利用360系统急救箱WinPE版来彻底消灭电脑病毒