文章目录
前言
1、C++首个程序
- C语言中第一个程序的写法:
//C语言中的第一个程序
#include<stdio.h>
int main()
{
printf("Hello World!\n");
return 0;
}
- C++第一个程序的写法:
//C++语言第一个程序
#include<iostream>
using namespace std;
int main()
{
cout << "Hello World!" << endl;
return 0;
}
2、namespace关键字
- 在C++中,4大区域:函数局部域、全局域、命名空间域、类域;其中函数局部域和全局域会影响编译查找逻辑和变量的生命周期,后两者不会影响影响变量的周期。
- 这个例子可以看出命名冲突的情况:
#include<iostream>
int rand = 10;
int main()
{
printf("%d\n",rand);
return 0;
}
- 解决上面的问题就用到namespace。
#include<iostream>
namespace variable
{
int rand = 10;
}
int main()
{
printf("%d\n",rand);
return 0;
}
写成这样可以解决命名冲突的问题,但怎样访问自己定义的rand数据呢?需要用C++中的作用域::
#include<iostream>
namespace variable
{
int rand = 10;
}
int main()
{
printf("%d\n",variable::rand);
return 0;
}
3、C++输入/输出
- 头文件
<iostream>
表示input output stream的缩写,是标准的输入、输出流库。 - std::cin是istream类的对象,主要面向窄字符的标准输入流。
- std::cout是ostream类的对象,主要面向窄字符的标准输出流的。
//C++输入/输出
#include<iostream>
using namespace std;
int main()
{
cout<<"C++你好!"<<endl;//endl就是换行的
return 0;
}
4、缺省参数
- 缺省参数的含义:简单说就是我们在声明或定义函数的时候,给参数给定一些初始值,当我们在调用函数的时没给实参的时候就会用参数中的初始值。
- 分类:全缺省参数、半缺省参数。
- 全缺省参数:给函数的形参都给一个初始值(缺省值);
- 半缺省参数:给函数中部分形参给缺省值。
- 注意:C++规定半缺省参数的时候,必须从右往左一次缺省(给初始值),必须是连续的,不能间隔。
- 当函数的声明和定义分开的时候,缺省参数不能再声明和定义中同时出现,规定必须函数声明给缺省值。
//缺省参数
#include<iostream>
using namespace std;
//全缺省参数
void func1(int number=20)
{
cout << "number=" << number << "\n";
}
int main()
{
func1();
func1(666);
return 0;
}
- 全缺省参数和半缺省参数
//全缺省参数和半缺省参数的区别
#include<iostream>
using namespace std;
//全缺省参数
void func2(int a=10,int b=20,int c=30)
{
cout << "a+b+c=" << a + b + c << "\n";
}
//半缺省参数
void func3(int a,int b=20,int c=30)
{
cout << "a+b+c=" << a + b + c << "\n";
}
int main()
{
func2();
func3(40);
return 0;
}
5、函数重载
- 含义:在同一作用域中出现相同的函数名。在C++中函数重载可以表现出多态的行为,使用更灵活。
- 函数重载的条件:①函数名必须相同。②访问修饰符无要求。③返回值类型无要求。④函数的参数列表必须不同(参数个数不同、参数类型不同、参数的顺序不同)。
//函数重载
#include<iostream>
using namespace std;
void Add(int a, int b)
{
cout << "a+b=" << a + b << "\n";
}
void Add(double a, double b)
{
cout << "a+b=" << a + b << "\n";
}
int main()
{
Add(10, 20);
Add(1.5, 1.5);
return 0;
}
6、C++中的引用
- 引用的概念:记住一句话就是引用就是给变量取别名,并且编译器不会给引用变量开辟内存空间的,它和引用的变量共用一个内存空间(原来的内存空间)。简单例子就是《水浒传》各个英雄好汉的外号。
- 引用的定义格式:
类型名& 引用的别名 = 引用对象;
在语言中&表示取地址,C++中是引用别搞混了喔。
- 引用的具体应用:
①主要用于函数传参和函数的返回值,这样可以减少拷贝从而提高效率。
②在改变引用后,被引用对象会跟着改变。 - 具体例子如下:
//引用的应用(交换两个数)
#include<iostream>
using namespace std;
void Swap(int& a, int& b)
{
int tmp = a;
a = b;
b = tmp;
}
int main()
{
int number1 = 100;
int number2 = 200;
cout << "number1=" << number1 << " " << "number2=" << number2 << "\n";
Swap(number1, number2);
cout << "number1=" << number1 << " " << "number2=" << number2 << "\n";
return 0;
}
可以看到引用的变量和被引用对象是同一个内存空间。
7、const 引用
- 在使用const 需要提到权限缩放。例如:
//const 引用
#include<iostream>
using namespace std;
int main()
{
权限放大
//const int number = 10;//只读的权限,因为const修饰的
//int& rnu = number;//变为了可读可写的,因此报错
//权限缩小可以
int number2 = 30;
const int& rnu = number2;
cout << "rnu=" << rnu << "\n";
//平级的可以
int number3 = 40;
int& rnu1 = number3;
cout << "rnu1=" << rnu1 << "\n";
return 0;
}
- 临时对象的情况:产生条件是一个表达式、函数调用返回值、类型转换。编译器需要⼀个空间暂存表达式的求值结果时临时创建的⼀个未命名的对象,在C++中把这个未命名对象叫做临时对象。
- 比如说:
#include<iostream>
using namespace std;
int main()
{
int a = 10;
int b = 20;
//int& rab = a + b;//a+b是临时变量,临时变量具有常性,需要const修饰
const int& rab1 = a + b;
cout << "rab1=" << rab1 << "\n";
return 0;
}