//41CppPrimer_命名空间c++
//命名空间也叫名称空间
//命名空间的定义
//-每个命名空间是一个作用域
//-命名空间可以是不连续的-意思可以在头文件里面写MyApp的一部分内容,也可以在程序.cpp里面写一部分内容。两个地方的相同名字的命名空间,c++默认是一个,但你面的类与函数不要重名。调用时与两个部分写在一起是一样的功能。比如bs.h中有MyApp,cc41a_demo.cpp里面也有MyApp
//-接口和实现的分离
//-嵌套命名空间
//*命名空间成员的使用
//using std::vector;
//using primer=cplusplus_primer;
//using namespace std;
//没有在任何名称空间里面的类,就在全局命名空间里面
//设计自己的命名空间
//41CppPrimer_命名空间c++
//命名空间也叫名称空间
//命名空间的定义
//-每个命名空间是一个作用域
//-命名空间可以是不连续的-意思可以在头文件里面写MyApp的一部分内容,也可以在程序.cpp里面写一部分内容。两个地方的相同名字的命名空间,c++默认是一个,但你面的类与函数不要重名。调用时与两个部分写在一起是一样的功能。比如bs.h中有MyApp,cc41a_demo.cpp里面也有MyApp
//-接口和实现的分离
//-嵌套命名空间
//*命名空间成员的使用
//using std::vector;
//using primer=cplusplus_primer;
//using namespace std;
//没有在任何名称空间里面的类,就在全局命名空间里面
//设计自己的命名空间
#include <iostream>
#include "bs.h"
//using namespace std;//不建议使用这个,因为会导入std所有的内容,
using std::cout;//cpp里面-建议使用哪个就导入哪个。
using std::endl;
using namespace Bookstore;//名称空间
namespace bs = Bookstore;//可以使用别名
class Ant
{
};
namespace MyApp
{
double pail;//可以是变量
void processTrans()//函数
{
Bookstore::Sales_item s;
bs::Sales_item s2; ////可以使用别名方式
}
class Dog//类
{
};
}
using namespace std;//std就c++定义好的名称空间
int main()
{
using namespace MyApp;
std::cout << "hello111" << std::endl;
//MyApp::processTrans();
processTrans();
MyApp::Dog();
MyApp::Dog1();
::Ant();//全局名称空间——c++默认的
::tt1();//全局名称空间在bs.h中
//Bookstore::Sales_item item;
return 0;
}
bs.h
#pragma once
#ifndef _BS_H
#define _BS_H
#include <string>
//using namespace std;//头文件里不要这样写
//using std:: cout;//头文件里也不要这样写
namespace Bookstore
{
class Sales_item
{
public:
//建议写std::string的方式
Sales_item(const std::string &book = "") :isbn(book), units_sold(0), revenue(0.0) {}
double avg_price() const;
private:
std::string isbn;
unsigned units_sold;//销售数量
double revenue;
};
}
namespace MyApp
{
class Dog1
{
};
}
class tt1
{
};
#endif // !_BS_H
bs.cpp
#include "bs.h"
namespace Bookstore
{
double Sales_item::avg_price() const
{
if (units_sold)
return revenue / units_sold;
else
return 0;
}
}
来源:CSDN
作者:txwtech
链接:https://blog.csdn.net/txwtech/article/details/104071472