C++简介
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。
C++ 完全支持面向对象的程序设计,包括面向对象开发的四大特性:封装、继承、多态、抽象。
数据类型
其中常见的C++数据类型:bool,char,int,float,double,void,wchar_t。
typedef 声明
typedef 为一个已有的类型取一个新的名字。例如:
1 | typedef int feet; |
类型转换
C++ 中有四种类型转换:静态转换、动态转换、常量转换和重新解释转换。
- 静态转换
1
2int i = 10;
float f = static_cast<float>(i); // 静态将int类型转换为float类型 - 动态转换
动态转换通常用于将一个基类指针或引用转换为派生类指针或引用。动态转换在运行时进行类型检查,如果不能进行转换则返回空指针或引发异常。1
2
3
4class Base {};
class Derived : public Base {};
Base* ptr_base = new Derived;
Derived* ptr_derived = dynamic_cast<Derived*>(ptr_base); - 常量转换
常量转换用于将 const 类型的对象转换为非 const 类型的对象。1
2int i = 10;
float f = reinterpret_cast<float&>(i); // 重新解释将int类型转换为float类型 - 重新解释转换
重新解释转换将一个数据类型的值重新解释为另一个数据类型的值,通常用于在不同的数据类型之间进行转换。1
2int i = 10;
float f = reinterpret_cast<float&>(i); // 重新解释将int类型转换为float类型
变量作用域
三种变量:局部变量、形式参数(函数的定义中声明的变量)、全局变量。
变量的作用域可以分为一下几种:局部作用域、全局作用域、块作用域、类作用域。
局部变量和全局变量的名称可以相同。
使用类名和作用域解析运算符 :: 来访问这个变量。
常量
C++中的常量包括:整数常量、浮点常量、布尔常量、字符常量、字符串常量、定义常量(#define,const)。
函数参数
如果函数要使用参数,则必须声明接受参数值的变量。这些变量称为函数的形式参数。
- 传值调用
向函数传递参数的传值调用方法,把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数不会影响实际参数。 - 指针调用
该方法把参数的地址赋值给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 - 引用调用
该方法把参数的引用赋值给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
数组
- 指向数组的指针
1
2double runoobAarray[5] = { 1000.0, 2.0, 3.4, 17.0, 50.0 };
double *p = runoobAarray; - 传递数组给函数
通过指定不带索引的数组名称来给函数传递一个指向数组的指针。 - 从函数返回数组
1
2
3int * myFunction() {
//. . .
}
字符串
strcpy(s1, s2); 复制字符串 s2 到字符串 s1。
strcat(s1, s2); 连接字符串 s2 到字符串 s1 的末尾。连接字符串也可以用 + 号。
strlen(s1); 返回字符串 s1 的长度。
strcmp(s1, s2); 如果 s1 和 s2 是相同的,则返回 0;如果 s1<s2 则返回值小于 0;如果 s1>s2 则返回值大于 0。
strchr(s1, ch); 返回一个指针,指向字符串 s1 中字符 ch 的第一次出现的位置。
strstr(s1, s2);返回一个指针,指向字符串 s1 中字符串 s2 的第一次出现的位置。
指针
指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。
- 空指针
NULL 指针是一个定义在标准库中的值为零的常量。