C++——初阶

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、命名空间是什么?

1、为什么要有命名空间

2、怎么使用命名空间

二、inline

1.inline是什么?

2.为什么要有inline

3.inline的作用


前言

本篇文章主要讲解C++入门的一些基础知识,主要的内容有命名空间,inline的使用


提示:以下是本篇文章正文内容,下面案例可供参考

一、命名空间是什么?

我们从字面意思来理解,命名空间就是一个专门来命名的空间,它的存在就是为了我们更好的给函数,变量等进行命名。

1、为什么要有命名空间

        从作用的角度上来说,命名空间的存在就是为了我们能够更好的进行命名,但是有人可能会想到,自己平时命名时也没发生什么问题,为什么要命名空间这个东西,可能我们平时所写的代码量并不是非常的多,所使用的函数和变量等也没有太多,但是我们所写的项目有几千,几万行时呢,又或者我来举个例子,在一个项目中同时使用到了栈和队列,但是你只能自己建栈和队列,栈和队列都同时要init和push等函数,那你怎么办。这就是命名空间的起因。

2、怎么使用命名空间

        命名空间的使用规则:


namespace text {
	int a;
	void Funk() {};

}

 在命名空间内的变量或者函数并不会被自动调用,而且不会与该命名空间之外的同名的函数或者变量发生冲突,如果你想要使用该函数,你必须主动调用,否则程序就会将该命名空间忽略,调用方法如下:


namespace text {
	int a;
	void Funk() {};

}

int main()
{
	text::a = 1;
	text::Funk();        //调用命名空间内的函数
	return 0;
}

 命名空间也是可以嵌套使用的,意思就是可以这样:


namespace text {
	int a;
	void Funk() {};
	namespace text1 {
		int a;
		void Funk() {};
	}

}

using namespace text;		//展开text命名空间
using namespace std;		//展开std库
int main()
{
	text::a = 1;
	text::Funk();
	return 0;
}

并且内部的同名并不会发生冲突。 

当然当我们使用C++的std库的时候也是这样使用,不过还有一种方法,不过这种方法我并不是很推荐使用,


namespace text {
	int a;
	void Funk() {};

}

using namespace text;		//展开text命名空间
using namespace std;		//展开std库
int main()
{
	text::a = 1;
	text::Funk();
	return 0;
}

      这种方法在学校里老师常用,但是这有一个风险,而这个风险就是命名空间存在的意义,当我们展开一个命名空间时,空间内的内容将完全暴露在当前的文件中,也就是程序的所有函数都可以使用它,这也可能造成命名冲突,所以尽量不要直接展开。如果要使用某个函数或者是变量,那么就通过命名空间直接使用就行

 

二、inline

1.inline是什么?

        inline叫做内联,内联的作用是用来代替#define的一部分宏函数。

2.为什么要有inline

要想了解inline存在的意义,那么就要先知道#define的缺陷,宏的作用就是将一个或者一串特定的字符替换为自己所定义的字符,那么define的缺陷就很明显了,它并不能检查,不能被调试,对于一个程序员来说,一个程序不能被调试,那得是多痛苦,要是这里有bug,你会疯的。


#define add(a,b) ((a)+(b));

int main()
{
	int a = add(1, 2);
	
	return 0;
}

 

3.inline的作用

上面说完define的缺点后,这里来说下inline的好处,inline完美的克服了define的所有缺点,define的缺点就是他的优点,但是如果inline这么好,我们还需要define干什么,inline的运行的原理是将具有inline的函数直接拷贝过来,这是一种空间换时间的方法


#define add(a,b) ((a)+(b));
inline int  Add() { return 1; };
int main()
{
	int a = add(1, 2);
	int a = Add();
	return 0;
}

 

当然inline的缺点也是很明显的,当程序频繁的调用inline的函数时,inline的函数就会重复展开,导致代码变多,就会让程序变卡所以inline只适用于短小且频繁调用的函数,当然如果程序结构太大,编译器还是会忽略掉inline的,所以不必太过担心。 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值