C++ namespace的用法

//namesp.h
namespace pers{
    const int LEN = 40;
    struct Person{
        char fname[LEN];
        char lname[LEN];
    };
    void getPerson(Person &);
    void showPerson(const Person &);
}

namespace debts{
    using namespace pers;
    struct Debt{
        Person name;
        double amount;
    };
    void getDebt(Debt &);
    void showDebt(const Debt &);
    double sumDebts(const Debt ar[], int n);
}

 

第二个文件:

//namesp.cpp
#include <iostream>
#include "namesp.h"

namespace pers{
    using std::cout;
    using std::cin;
    void getPerson(Person &rp){
        cout<<"Enter first name: ";
        cin>>rp.fname;
        cout<<"Enter last name: ";
        cin>>rp.lname;
    }
    
    void showPerson(const Person &rp){
        cout<<rp.lname<<", "<< rp.fname;
    }
}


namespace debts{
    using std::cout;
    using std::cin;
    using std::endl;
    
    void getDebt(Debt & rd){
        getPerson(rd.name);
        cout<< "Enter debt: ";
        cin>>rd.amount;
    }
    
    void showDebt(const Debt &rd){
        showPerson(rd.name);
        cout<<": $"<<rd.amount<<endl;
    }
    
    double sumDebts(const Debt ar[], int n){
        double total  = 0;
        for(int i = 0; i < n; i++){
            total += ar[i].amount;
        }
        
        return total;
    }
}

第三个文件:

//namessp.cpp
#include <iostream>
#include "namesp.h"

void other (void);
void another(void);

int main(void)
{
    using debts::Debt;
    using debts::showDebt;
    Debt golf = { {"Benny","Goatsniff"},120.0};
    showDebt(golf);
    other();
    another();
    
    return 0;
}


void other(void)
{
    using std::cout;
    using std::endl;
    
    using namespace debts;
    Person dg = {"Doodle", "Glister"};
    showPerson(dg);
    cout<<endl;
    Debt zippy[3];
    int i;
    
    for(i = 0; i < 3; i++){
        getDebt(zippy[i]);
    }
    
    for(i = 0; i < 3; i++){
        showDebt(zippy[i]);
    }
    
    cout<<"Total  debt: $" <<sumDebts(zippy,3)<<endl;
    return;
}

void another(void){
    using pers::Person;
    
    Person collector = {"Milo", "Rightshift"};
    pers::showPerson(collector);
    std::cout<<std::endl;
}

 

C++鼓励程序员在开发程序时使用多个文件.一种有效的组织策略是,使用头文件来定义用户类型,为操纵用户类型 的函数 提供函数原型;并将函数 定义放在一个独立的源代码当中.头文件和源代码文件一起定义和实现了用户定义的类型 及其使用方式.最后,将main()和其他这些函数的函数放在第三个文件中.

posted @ 2012-04-27 21:44  hnrainll  阅读(3296)  评论(0编辑  收藏  举报