1.增强的for循环
1.在C++中,可以在任意一个位置声明变量
for(int i=0; i<10; i++)
{
cout << i << endl;
}
2.范围 for循环
在C++中会有一种类似于python中迭代器的操作,类似以下的循环:
int arr[5] = {1, 2, 3, 4, 5};
for (int value:arr)
{
cout << value << endl;
}
结果:1 2 3 4 5
注意:这种操作只能遍历一个静态数组。
2.auto类型
auto类型是一种可以自动识别变量类型的类型。
比如上例中的 int value 可以替换为 auto value 仍可以正常运行。
int arr[5] = {1, 2, 3, 4, 5};
for (auto value:arr) // auto 可以自动识别arr的元素类型为int
{
cout << value << endl;
}
3.bool类型
在C++中,提供 bool 类型的数据类型,值为 true 或 false,其大小为 1 个字节;
相对来说,在头文件 windows.h 中有一种类型 BOOL ,实际上是 int 的 typedef,其值为 TRUE 和 FALSE,大小是 4 个字节(原因是BOOL实际上是int类型,因此大小与int类型一致)。
bool is_or_not = true;
cout << sizeof(is_or_not) << endl;
#include<windows.h>
BOOL Is_Or_Not = TRUE;
cout << sizeof(Is_Or_Not) << endl;
4.函数默认参数
1.有关函数默认参数的知识先前已经进行过学习,本次进行复习。
首先,函数参数的默认值是由右向左进行赋予默认值的,原因在于如果从左向右进行默认值的赋予,倘若有4个参数,而默认值给定了3个,则意味着最后一个参数没有默认值,当进行函数调用的时候,需要赋予参数,此时只赋1个值会报错(只赋一个值表示理解为前三个有默认值,只需赋最后一个参数的值);全赋上值则可以正确调用,但是此时默认值无意义,因为只有全赋值的情况下函数可以调用;从右向左进行赋予默认值的话,倘若有4个参数,而默认值给定了2个,则当调用函数而只给定两个参数时,可以将这两个参数赋值给前两个没有默认值的参数。
2.默认值在声明函数的时候给出。
void ShowSLAM(int param1, int param2, int param3 = 4, int param4 = 5);
int main()
{
...
}
void ShowSLAM(int param1, int param2, int param3, int param4)
{
...
}
5.函数重载
定义:函数重载的意思就是 **在同一个作用域,具有相同的函数名的函数所具有的参数不同(参数的类型不同或参数的个数不同)。
下面以一个简单的例子来进行解释说明:
// 例1.求圆的面积
void Area(int r)
{
cout << r*r*3.14 << endl;
return;
}
// 例2.求长方形的面积
void Area(int l, int h)
{
cout << l*h << endl;
return;
}
// 例3.输出字符串
void Area(char *str)
{
cout << str << endl;
return;
}
当我们调用这三个函数时,根据所输入的参数的类型、参数的个数会调用不同的函数。
6.const常量
复习:
例1. const int *p;
此时,*p无法进行修改而 p 可以进行修改。
7.string 头文件
在C++中,有一种新的类型用来保存字符串,类型关键字:string。
#include<iostream>
#include<string>
using namespace std;
int main()
{
char *str1 = "alksdjflakjdf";
char *str2;
str2 = "jsaldfkjalskdfj"; //
string str3;
str3 = "saldfjaljdf";
}
可以对 string 声明的变量进行 +、= 操作。
- 操作用来对字符串进行拼接;
== 操作用来对字符串进行比较是否相等(相等返回1,不相等返回0)。
string str1, str2;
str1 = "Hello SLAM";
str2 = "Hello slam";
cout << str1 == str2 << endl;
str1 += " I can't understand it";
cout << str1 << endl;
8.引用
1.引用运算符
&
2.引用的概念
引用就是给变量起别名(不同于typedef)
3.作用
引用可以使程序在不同作用域使用同一个变量。
4.注意
注意: 引用定义了之后需要初始化。
5.与指针的区别
1.引用定义了之后需要进行初始化
2.引用初始化后就不能再重新引用其他空间
3.有空的指针,但是没有空的引用,引用要引用一个合法的存储单元,可以 const int& a = 123。
6.优点
安全,只能操纵一块空间
7.
引用是C++语言中的一个特殊的数据类型描述,用于在程序的不同部分使用两个以上的变量名指向同一地址。
int a = 100;
int& b = a; // 引用
b++; // 对引用操作,实际上就是对原数操作
cout << a << endl;
注意 :引用一旦被初始化,就不能再重新引用其他空间!!!
8.总结
& 符号的三种用法:
1.取地址符
2.按位与
3.引用
9.编写一个交换两个输入参数的函数
// 使用引用的方法
void Swap(int& num1, int& num2)
{
int temp = num1;
num1 = num2;
num2 = temp;
return;
}
// 使用指针的方法
void Swap(int* num1, int* num2)
{
int temp = *num1;
*num1 = *num2;
*num2 = temp;
return;
}
10.函数参数的传递方式
1.值传递
2.地址传递
3.引用传递
11.选择函数参数的传递方式
1.是否需要修改传入的内容,若修改,使用地址或引用传递;不修改,使用值传递;
2.在C++中不建议使用值传递;
3.地址传递和引用传递的区分方法:看传入的是不是new出来的空间,若是,则使用指针传递
9.面向对象(Object Oriented Programming)
1.有类和对象之分
类指的是模版,对象是真实存在的实体。
定义一个类:
class CPerson
{
...
};
类似于C语言中的 struct ,一般以C开头作为类名。
2.访问修饰符
1.public:在任何一个地方都可以见到
2.protected:在自己和派生类中可以见到
3.private:只有自己可以见到;若成员属性没有访问修饰符,则默认为 private。
3.类中包括
1.成员属性:
2.成员函数(方法):类内定义的方法,一般来说,成员函数是public的。