期末速成C++【初识C++】

目录

1.英文单词

2.C++的特点

3.C++对C语言的补充

3.1命名空间和域操作符

🎇3.2控制台输入输出

3.3类型增强

3.3.1const常变量

3.3.2const与指针

3.3.3布尔类型与枚举类型

3.4默认参数

🎇3.5函数重载

🎇引用

3.6.1引用做函数参数

3.6.2函数返回引用

3.6.3常引用

3.7内存管理

🎇3.8new/delete

3.9指针数组

3.10nullptr

3.11基于范围的for循环


1.英文单词

  • namespace 命名空间

  • Object-Oriented Programming 面向对象

  • template 模板

  • Standard Template Library STL

  • Lambda 表达式-函数编程

  • std standard 标准命名空间

  • End of Line (endl) 标准命名空间换行符

  • console 控制台

  • cin console in

  • cout console out

  • console application

  • Overload 函数重载

  • steam iostream ostream 流

  • constant 常 const

  • enumerate 枚举 enum

  • memory allocate 内存分配 malloc

2.C++的特点

  • 同时支持四种编程范式,面向过程、面向对象、泛型编程、函数式编程
  • 同C语言相比,适合开发大型应用程序。(操作系统内核还是C语言)(多人同时开发namespace)(存在OOP)
  • 具有可复用、可维护、可扩展、灵活性好的特点。(活字印刷)
  • 面向对象OOP三个基本特征:封装、继承、多态

在软件开发过程中唯一不变的是变化!(策略模式)

class类(与结构体struct等自定义类型是具有同等的地位的)成员函数、成员变量

对象的类型:类类型

3.C++对C语言的补充

cpp 复制代码
#include<iostream>
//#include<iostream> 没有扩展名也不影响它是一个文本文件。
//由于C++兼容C语言,对C语言中常用的头文件也进行了替换。
using namespace std;

int main()
{
	cout << "hello word!" << endl;
	return
}
//数据流操作

3.1命名空间和域操作符

  • :: 域操作符
  • std 标准命名空间
  • 自定义命名空间 } 后面没有分号;
  • 只自定义类型struct 、class后面才有分号;
  • 简化:using namespace std; //可以引用std中的全部元素

🎇3.2控制台输入输出

  • 从左往右结合
  • 输出运算符<< cout << a << b 返回值是cout
  • 输入运算符>> cin >> a>> b 返回值是cin

3.3类型增强

3.3.1const常变量

  • const:只读变量(常变量)的关键词

  • 常变量必须初始化

  • const int * 和 int *不能混用

3.3.2const与指针

  • 常量指针:const int* p 和 int const *p修饰的指向的变量
  • 指针常量 :int* const p修饰的是指针

【常量指针】

【指针常量】

3.3.3布尔类型与枚举类型

3.4默认参数

  • 函数在给半缺省参数,必须是从右往左连续依次给出,不能间隔跳跃。(从第一个开始)
  • 调用函数传参:必须从左到右连续传参,不能跳跃。(从第一个开始)
  • 缺省参数不能在函数声明和定义中同时出现,若有声明只能在声明中出现。
  • 优先写在fun.h 没有才写到cpp里面。函数声明和定义不能同时出现。

🎇3.5函数重载

  • 在同一作用域内,函数名相同、参数列表不同。
  • 编译器会根据参数列表自动选择相应的函数。
cpp 复制代码
#include<iostream>
using namespace std;
// 1、参数类型不同
int Add(int left, int right)
{
	cout << "int Add(int left, int right)" << endl;
	return left + right;
}
double Add(double left, double right)
{
	cout << "double Add(double left, double right)" << endl;
	return left + right;
}
 
// 2、参数个数不同
void f()
{
	cout << "f()" << endl;
}
void f(int a)
{
	cout << "f(int a)" << endl;
}
 
 
// 3、参数类型顺序不同
void f(int a, char b)
{
	cout << "f(int a,char b)" << endl;
}
void f(char b, int a)
{
	cout << "f(char b, int a)" << endl;
}
 
 
int main()
{
	Add(10, 20);
	Add(10.1, 20.2);
	f();
	f(10);
	f(10, 'a');
	f('a', 10);
	return 0;
}

🎇引用

引用的类型必须和引用实体是同种类型。共用同一块内存空间。

3.6.1引用做函数参数

cpp 复制代码
void Swap(int& p1, int& p2)//形参到实参也是初始化!
{
	int tmp = p1;
	p1 = p2;
	p2 = tmp;
}
int main()
{
	int x = 10;
	int y = 20;
	cout << "x=" << x << endl;
	cout << "y=" << y << endl;
	Swap(x, y);
	cout << "x=" << x << endl;
	cout << "y=" << y << endl;
	return 0;
}

3.6.2函数返回引用

返回引用,函数调用作为左值】✔(下标运算符重载)可以避免返回值的拷贝

cpp 复制代码
#include<iostream>
using namespace std;
int& At(int b[], int index)
{
	return b[index];
}

int main()
{
	int a[3] = { 1,2,3 };
	At(a, 1) = 100;
	cout << "a[1]=" << a[1] << endl;
	return 0;
}

返回引用作右值】 ❌不能返回局部变量的引用。

cpp 复制代码
int& Add(int a, int b)
{
	int c = a + b;
	return c;
}
int main()
{
	int& ret = Add(1, 2);
	cout << "Add(1, 2) is :" << ret << endl;
	return 0;
}

3.6.3常引用

3.7内存管理

  • 自由存储区:使用malloc进行分配,使用free进行回收。

  • 堆:内存使用new进行分配,使用delete进行释放。存放进程运行被动态分配的内存段。

  • 栈:内存由编译器在需要时自动分配和释放。存放程序的局部变量(但不包括static声明的变量);函数被调用时的参数和返回值。一个函数被调用两次就会有两个独立的栈.

🎇3.8new/delete

  • new/delete

  • new/delete是两个关键字不是函数。Malloc和free是函数

  • 区分()初始化 和 [ ] 开辟空间的个数

【动态数组和静态数组】

3.9指针数组

  • 因为指针的存在可以直接访问内存,从而提高运行速度。
  • 核心数据要放在堆里面(一定是new出来的)
  • 要使用指针,但是少使用指针运算。例如:*(p+i)=p[i]
  • 能够使用引用,尽量使用引用

3.10nullptr

  • 本来想调用第二个f函数,但是NULL为0整型,会调用第一个f函数。为了解决所以我们在调用第二个函数的时候传nullptr。
cpp 复制代码
void f(int)
{
	cout << "f(int)" << endl;
}
void f(int*)
{
	cout << "f(int*)" << endl;
}
int main()
{
	f(0);
	f(NULL);
	f((int*)NULL);//强转
    f(nullptr);
	return 0;
}

3.11基于范围的for循环

  • 存在不能通过基于范围的for循环实现。
  • 在下述语法格式中,for循环语句会遍历对象(数组、容器等),将取到的值赋给变量,执行完一次循环自动获取对象中的下一个值赋给变量,直到对象中的数据被迭代完毕。
cpp 复制代码
for(变量:对象)
{
   //.......
}

极简版!!详细的在另外一个专栏!!

相关推荐
软件黑马王子22 分钟前
C#初级教程(4)——流程控制:从基础到实践
开发语言·c#
闲猫25 分钟前
go orm GORM
开发语言·后端·golang
黑不溜秋的1 小时前
C++ 设计模式 - 策略模式
c++·设计模式·策略模式
李白同学2 小时前
【C语言】结构体内存对齐问题
c语言·开发语言
黑子哥呢?3 小时前
安装Bash completion解决tab不能补全问题
开发语言·bash
青龙小码农3 小时前
yum报错:bash: /usr/bin/yum: /usr/bin/python: 坏的解释器:没有那个文件或目录
开发语言·python·bash·liunx
大数据追光猿3 小时前
Python应用算法之贪心算法理解和实践
大数据·开发语言·人工智能·python·深度学习·算法·贪心算法
Dream it possible!4 小时前
LeetCode 热题 100_在排序数组中查找元素的第一个和最后一个位置(65_34_中等_C++)(二分查找)(一次二分查找+挨个搜索;两次二分查找)
c++·算法·leetcode
柠石榴4 小时前
【练习】【回溯No.1】力扣 77. 组合
c++·算法·leetcode·回溯
王老师青少年编程4 小时前
【GESP C++八级考试考点详细解读】
数据结构·c++·算法·gesp·csp·信奥赛