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( 运行时类型识别)
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;
}