四、C++ 程序结构(下)

文章讲述了C++中的命名空间概念,包括全局和局部命名空间的使用,以及如何通过`using`关键字导入和避免命名冲突。重点介绍了`usingA::Person`与`usingnamespaceA`的区别及其影响。
摘要由CSDN通过智能技术生成

 1. using A::Person

#include <stdio.h>
#include "person.h"
#include "dog.h"

/* global namespace 全局命名空间 */

/* 把A::Person放入global namespace,以后可以使用Person来表示A::Person */
using A::Person;
using C::Dog;

using A::printVersion;
using C::printVersion;

int main(int argc, char **argv)
{
	/* local namespace 局部命名空间*/
	//using A::Person;    把using A::Person;放到这里,也是一样的效果
	//using C::Dog;          

	Person per;
	per.setName("zhangsan");
	per.setAge(16);
	per.printInfo();

	Dog dog;
	dog.setName("wangcai");
	dog.setAge(1);
	dog.printInfo();

	A::printVersion();
	C::printVersion();
	return 0;
}

插入using A::printVersion,main中可以直接调用printVersion;

插入using A::printVersion,

        using C::printVersion,

        main中要用A::printVersion;否则会产生二义性,冲突

2.using namespace A;  就是把A空间的所有类、函数都导入进来

#include <stdio.h>
#include "person.h"
#include "dog.h"

using namespace A;
using namespace C;

int main(int argc, char **argv)
{
	/* local namespace */
	//using A::Person;
	//using C::Dog;

	Person per;
	per.setName("zhangsan");
	per.setAge(16);
	per.printInfo();

	Dog dog;
	dog.setName("wangcai");
	dog.setAge(1);
	dog.printInfo();

	A::printVersion();
	C::printVersion();
	return 0;
}

printVersion会冲突,需要指定空间

3.总结

命名空间的使用:

.h/.cpp文件中

namespace a{
    //声明或定义函数
    int fun();
    void fun2()
    {
        ...
    }
}
调用者源文件中

1.直接使用:
a:fun, a:fun2

2.using声明
using a::fun;  //以后调用fun即表示a::fun

3.using编译
using namespace a; //以后调用fun,fun2即可

#include <stdio.h>          ---------->>>>>>            #include <iostream>

printf("name = %s, age = %d, work = %s\n", name, age, work);

std::cout<<"name = "<<name<<" age = "<<age<<" work = "<<work<<std::endl;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值