C++介绍以及内联函数、函数重载、默认参数

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

1983年在贝尔实验室诞生,在发展阶段被称为“new C”,之后被称为“C with Class”,后来取名C++,++即C语言中的自增操作符,所以说C++是C的增强和完善版本。

1.C和C++的关系:

C++是对C的升级和完善。

2.学习C++

学习 C++,关键是要理解概念,而不应过于深究语言的技术细节。

学习程序设计语言的目的是为了成为一个更好的程序员,也就是说,是为了能更有效率地设计和实现新系统,以及维护旧系统。

C++ 通常用于编写设备驱动程序和其他要求实时性的直接操作硬件的软件。

3.C的缺陷

1.不严谨

2.名字冲突 作用域

3.面向过程

4.无法解决大规模问题

4.C++新增特性

  • 更为严格的类型检查

  • 新增变量引用

  • 支持面向对象

​ 类和对象、 继承、 多态、 虚函数及RTTI( 运行时类型识别)

  • 新增泛型编程
    支持模板( template) , 标准模板库(STL)

  • 支持异常处理

  • 支持函数及运算符重载

  • 支持名字空间
    用于管理函数名、 变量名及类

5.面向对象编程OOP

OOP是程序设计工程化的一种方法, 软件架构的一种思想。以事务为中心。 一切事物皆对象, 通过面向对象的方式, 将现实世界的事物抽象成对象。
OOP基本原则是程序是由单个能够起到子程序作用的单元或对象组合而成, 以达到软件工程的三个主要目标: 重用性、 灵活性和扩展性。

  • 重用性:代码被重复使用, 以减少代码量, 就是重用性的重要指标。

  • 灵活性:软件系统由很多可以复用的构件随意重构, 以达到实现不同的功能, 非常灵活。

  • 扩展性:软件系统可以容易地新增需求, 基本构件也可以轻松的扩展功能

面向过程设计:
程序 = 数据结构 + 算法
    
面向对象设计:
对象 = 数据结构 + 算法
程序 = ( 对象 + 对象 + ...+ 对象间通讯机制

6.编译C++程序

C和C++的编译步骤一样

(1)预处理

(2)编译

(3)汇编

(4)链接

7.内联函数

C++提供一种提高效率的方法, 即在编译时将所调用函数的代码直接嵌入到主调函数中。 这种嵌入到主调函数中的函数称为内置函数(inline function), 又称内嵌函数或内联函数。

语法:inline 存储类型 数据类型 函数名(参数列表);
例子:
#include <iostream>
using namespace std;
inline void fun(void)
{
	cout << "call fun" << endl;
}

int main()
{
	int n = 0;

	while(n < 5)
	{
		fun();
		n++;
	}
	//相当于上面的循环语句里fun();被替换成cout << "call fun" << endl;	
	
	return 0;
} 

注意:内联函数的限制

​ 使用内联函数可以节省运行时间,但却增加了目标程序的长度。是以空间换时间的一种方法。

​ 因此一般只将规模很小(一般为5个语句以下)而使用频繁的函数声明为内置函数。

​ 由于多个源文件是分开编译的,要内联就应该把内联函数声明定义在头文件中。

​ 内置函数中不能包括复杂的控制语句,如循环语句和switch语句。

8.函数重载

在大规模代码中,函数重名难以避免,为此提出了函数重载。

在同一个作用域下,函数名相同,参数列表不同(个数不同,类型不同,个数和类型都不同),返回值可相同可不相同。

  • 传递不同的参数,执行不同的函数

C++代码在编译时会根据参数列表对函数进行重命名,例如void add(int a, int b)会被重命名为_add_int_int,void add(float x, float y)会被重命名为_add_float_float。当发生函数调用时,编译器会根据传入的实参去逐个匹配,以选择对应的函数,如果匹配失败,编译器就会报错,称为重载决议。

#include <iostream>
using namespace std;

int add(int x )
{
	return x+x;
}

int add(int x, int y)
{
	return x+y;	
}

float add(float a, float b)
{
	return a+b;
}

double add(double a, double b)
{
	return a+b;
}

char add(char a, char b)
{	
	return a+b;	
}

double add(double a, double b, double c)
{
	return a+b+c;
}

int main()
{
	//传递不同的参数,执行不同的函数 
	cout << add(10) << endl;
	cout << add(5, 6) << endl;
	cout << add(1.1,1.2,1.3) << endl;
	cout << add('1', '1') << endl;
	cout << add(1.2, 2.4) << endl; 
	cout << add(1.2f, 2.4f) << endl;  
		
	float a = 1.2, b = 2.4;
	cout << add(a, b) << endl;  
	
	return 0;
}

//小数默认double类型
要想将其视为float类型,可在小数后面加f
或者定义一个float变量来保存小数的值,然后传变量

9.默认参数

对于定义的函数,可以对其设置默认的参数,当调用函数时,传入的参数的个数少于函数参数的个数的时候,就会对其其他的变量调用默认值进行赋值

  • 如果给某一参数设置了默认值,那么在参数表中其后所有的参数都必须也设置默认值。
//所以在给参数列表设置默认参数时时,最好从右往左设置。
  • 如果进行了函数声明,在声明中设置默认值即可
#include <iostream>
using namespace std;

int add(int x=100);
int add(int x, int y,int z=20);

int main()
{ 
	cout << add() << endl;	
	cout << add(20) << endl; 

	
	cout << add(20,10) << endl;
	
	
	return 0;
}

int add(int x)
{
	return x+x;
}

int add(int x, int y,int z)
{
	return x+y+z;	
}

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值