C++第二天:内联函数,auto,for,nulltr

C++:从开始到放弃第二天

1.内联函数

概念:

以inline修饰的函数叫做内联函数。
下面是没有加Inline的时候,机器运行时的编程代码。

在这里插入图片描述

进行了压栈操作,导致系统开销加大,花费了更多的时间。

下面是加了inline的编程代码。
在这里插入图片描述

可以看到,用inline修饰的内联函数,在编译时会在调用的内联函数地方展开,没有压栈的开销。以空间为代价,提高了效率。

特性:

1.inline函数是一种以空间换时间的方法,省去了调用函数的额外开销。但是在函数较长的时候,最好不要使用Inline函数。
2.inline对于编译器来说只是一个建议,编译器会自动优化,如果定义的内联函数之中有嵌套或者循环,编译器优化时会直接跳过inline。
3.Inline不建议声明和定义分离,分离会导致链接错误。
4.c++中函数定义时用内联函数代替宏。

2.auto关键字

定义:

auto作为一个新的类型指示符来指示编译器,auto声明是编译器
在编译阶段推导而得来的。

例子:

int main() 
{
	int a = 10;
	auto b = a;
	auto c = 'a';
	auto d = TestAuto();
	cout << typeid(b).name() << endl;
	cout << typeid(c).name() << endl;
	cout << typeid(d).name() << endl;
	system("pause");

	//auto e; 无法通过编译,使用auto定义变量时必须对其进行初始化
	return 0;
}

在这里插入图片描述

注意,auto在使用时必须要定义。

使用细则:

1.auto与指针和引用结合起来使用。在指向引用时必须要用auto&.
2.在同一行声明多个变量时,变量必须为同一类型。否则只对第一类型进行推导,同时用推导类型定义其他类型。

不能使用的场合

1.函数参数
2.声明数组
3.不能定义非静态类型成员变量。(?)
4.实例化模板不用auto作为模板参数。(?)

基于范围的for循环

由“:”分为两个部分

1.用于迭代的变量
2.被迭代的范围

int main()
{
	int a[] = { 1, 2, 3, 4, 5 };
	for (auto e : a)
		cout << e << " "<<endl;
	system("pause");
	return 0;
}

在这里插入图片描述

适用范围

1.数组范围已经确定。
2.迭代对象实现+±-操作(?)
迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。

4.空指针 nullptr

在C++11提供了nullptr,用来代表一个指针空值常量。

注意

1.nullptr是作为关键字引入的,不需要头文件
2.sizeof(nullptr)与sizeof((void*)0)所占字节数一样
3.最好用nullptr表示空指针。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值