C++:从C到C++的飞跃之旅(C++基础知识)

        本期博客是一篇C++基础知识,对后续C++的深入学习,都是有着相当重要的地位❤,内容包含了以下知识:命名空间C++的输入&输出流缺省参数重载函数引用inline(内联函数)、nullptr(主要解决C语言NULL类型混淆的问题)

        如果这篇博客对大家有帮助,还请点赞收藏❤,感觉大家的支持~,我会更加努力的❤

一、命名空间

1.问题导向
#include<stdio.h>
#include<stdlib.h>

int rand = 1314;

int main()
{
	printf("%d\n", rand);
	return 0;
}

/*
 *这组代码中,就存在了一个不可避免的 会存在编译错误:
 *error C2365: “rand”: 重定义;以前的定义是“函数”
 *warning C4477: “printf”: 格式字符串“%d”需要类型“int”的参数,但可变参数 1 
 *拥有了类型“int (__cdecl *)(void)”  
 */

        不难理解,rand是生成随机数的函数名,其函数的声明存放于头文件<stdlib.h>中,而我们又定义了一个全局变量rand;这就导致了上面的错误,我们称为命名冲突

  • 问:自己写代码的时候,命名稍加注意一下,不就可以了吗?
  • 回:虽然你自己写代码的时候,不会发生命名冲突的问题,但你不能保证,多人协作写一个项目的时候,不会出现命名冲突的问题,毕竟每个人的想法都是参差不齐的。

        为了解决命名冲突的问题,C++引入了一个新的关键字——namespace,namespace后跟一对{},中间用于变量的定义,函数的声明与定义,类的声明与定义等等;可以为我们在全局域生成一个命名空间域;主要用于解决命名冲突、组织代码、提高代码的可读性和可维护性

        下面的代码,是在域中定义一个malloc为函数名的交换函数,和以rand为变量名的变量。包含头文件<stdlib.h>后,编译器不会报上面的错误。

2.namespace的定义
  • namespace的本质,在用途方面,可以类似于电脑分盘(新建文件夹),在不同的盘符(文件夹)中可以定义相同的文件标识
  • 不同的域可以使用相同的标识符,如局部域和作用域,都可以定义变量a;
  • 在同一域中,不能出现两个或两个以上的相同的标识符
  • 多文件中,存在相同的命名空间域名的时候,编译的时候,会形成同一个域
  • namespace可嵌套使用;
  • namespace只可在全局域中使用
  • C
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值