不一般的C++多文件程序结构

在这里插入图片描述

预处理指令

C++中要把.h或者.cpp文件翻译成可执行文件主要经过
预处理——编译——链接
预处理主要是检测文件的可执行性;
预处理指令以**#**开始

命名空间是C++语言的新特征

命名空间是类、函数、对象、类型等名字的声明集合
std;是C++语言的标准命名空间,包含了标准头文件中各种名字的声明;
标准头文件:iostrenm cstring iomanip
其中namespace 是C++的关键字,用于说明,命名空间。声明之后,程序可以使用iostream中的全部组件(例如cin、cout)
如果不用using声明名空间,则需要在使用时指定组件的名空间

#include<iostream>
using std::cin;
using std::cout;    //指定使用std的cout元素
int main(){
	int a,b;
	cin>>a;
	cin>>b;
	cout<<"a+b"<<a+b<<'\n';
	}

方发二

#include<iostream>
int main(){
	int a,b;
	std::cin>>a;    //声明使用std中的cin
	std::cin>>b;
	std::cout<<"a+b"<<a+b<<'\n';
	}

易错点

假如是我们自己声明的头文件//lib.h
Dream是lib中声明的一类类

#include"lib.h"
int main(){
	lib::Dream;
	}

这就是错误因为lib 是操作系统能识别的文件名,不是C++编译器能识别的“名字”。
所以有了namespace 和using 机制
在lib定义类时加入namespace lib;再用::即可,因为此时lib不再是头文件名而是命名空间名
在这里插入图片描述

使用命名空间

用using可以指定使用命名空间using两种形式
一、using namespace 名空间;
二、using 名空间::元素

#include<instream>
using namespace std;
namespace A                //这里的A就相当于上文中的lib
{	void f()
  	{cout<<"f():from A:"<<endl;}
  	namespace B;
  	{void f()
  	     {cout<<"f():from B"<<endl;}
}

int main(){
	using namespace A;             //使用名空间
	f();                           //调用A:f()
	B::f();                        //调用A;B:f()
	}
	
发布了15 篇原创文章 · 获赞 17 · 访问量 6920

猜你喜欢

转载自blog.csdn.net/weixin_45907018/article/details/104225636