一、C++简介:
C++是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言。支持过程化编程、面向对象编程和泛型编程。C++是C的一个超集,任何合法的C程序都是合法的C++程序。
面向对象开发的四大特性:
◆ 封装(Encapsulation):封装是将数据和方法组合在一起,对外部隐藏实现细节,只公开对外提供的接口。提高安全性、可靠性和灵活性。
◆ 继承(Inheritance):继承是从已有类中派生出新类,新类具有已有类的属性和方法,并且可以扩展或修改这些属性和方法。提高代码的复用性和可扩展性。
◆ 多态(Polymorphism):多态是指同一种操作作用于不同的对象,可以有不同的解释和实现。它可以通过接口或继承实现,提高代码的灵活性和可读性。
◆ 抽象(Abstraction):抽象是从具体的实例中提取共同的特征,形成抽象类或接口,以便于代码的复用和扩展。抽象类和接口可以让程序员专注于高层次的设计和业务逻辑,而不必关注底层的实现细节。
二、C++基本语法:
对象:具有状态和行为。
类:定义为描述对象行为/状态的模版/蓝图。
方法:方法表示一种行为,在方法中写入逻辑、操作数据、执行的动作。类可以包含多个方法。
即时变量:每个对象都有其独特的即时变量。对象的状态是由即时变量的值创建的。
#include <iostream> //定义头文件
using namespace std; //命名空间
int main() //主函数,程序从这里开始执行
{
cout << "Hello World"; // 输出 Hello World
return 0;
}
C++中,分号是语句的结束符,即每个语句必须以分号结束。
C++标识符是用来标识变量、函数、类、模块、任何其他用户自定义项目的名称。标识符是以字母A~或a~z或下划线_开始,后面跟零个或多个字母、下划线和数字(0~9))。标识符内不允许出现标点字符。
C++关键字:
三字符组是用来标识另一个字符的三个字符序列,又称为三字符序列。三字符序列是以两个问号开头。C++标准允许把某些字符指定为三字符序列。常见的三字符序列:
三字符组 | 替换 |
??= | # |
??/ | \ |
??' | ^ |
??( | [ |
??) | ] |
??! | | |
??< | { |
??> | } |
??- | ~ |
在C++中,空格用于描述空白符、制表符、换行符和注释。空格分隔语句的各个部分。
C++支持单行注释和多行注释://一般用于单行注释;/* .....*/一般用于多行注释。
三、C++数据类型:
C++基本数据类型:
类型 | 关键字 |
布尔型 | bool |
字符型 | char |
整型 | int |
浮点型 | float |
双浮点型 | double |
无类型 | void |
宽字符型 | wchar_t |
各种变量类型在内存中存储值需要占用的内存:
类型 | 位 | 范围 |
char | 1 个字节 | -128 到 127 或者 0 到 255 |
unsigned char | 1 个字节 | 0 到 255 |
signed char | 1 个字节 | -128 到 127 |
int | 4 个字节 | -2147483648 到 2147483647 |
unsigned int | 4 个字节 | 0 到 4294967295 |
signed int | 4 个字节 | -2147483648 到 2147483647 |
short int | 2 个字节 | -32768 到 32767 |
unsigned short int | 2 个字节 | 0 到 65,535 |
signed short int | 2 个字节 | -32768 到 32767 |
long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
signed long int | 8 个字节 | -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807 |
unsigned long int | 8 个字节 | 0 到 18,446,744,073,709,551,615 |
float | 4 个字节 | 精度型占4个字节(32位)内存空间,+/- 3.4e +/- 38 (~7 个数字) |
double | 8 个字节 | 双精度型占8 个字节(64位)内存空间,+/- 1.7e +/- 308 (~15 个数字) |
long long | 8 个字节 | 双精度型占8 个字节(64位)内存空间,表示 -9,223,372,036,854,775,807 到 9,223,372,036,854,775,807 的范围 |
long double | 16 个字节 | 长双精度型 16 个字节(128位)内存空间,可提供18-19位有效数字。 |
wchar_t | 2 或 4 个字节 | 1 个宽字符 |
32位系统与64位系统的存储大小的差别:
四、C++变量类型:
C++基本变量类型:
类型 | 描述 |
bool | 布尔类型,存储值 true 或 false,占用 1 个字节。 |
char | 字符类型,用于存储 ASCII 字符,通常占用 1 个字节。 |
int | 整数类型,通常用于存储普通整数,通常占用 4 个字节。 |
float | 单精度浮点值,用于存储单精度浮点数。单精度是这样的格式,1 位符号,8 位指数,23 位小数,通常占用4个字节。 |
double | 双精度浮点值,用于存储双精度浮点数。双精度是 1 位符号,11 位指数,52 位小数,通常占用 8 个字节。 |
void | 表示类型的缺失。 |
wchar_t | 宽字符类型,用于存储更大范围的字符,通常占用 2 个或 4 个字节。 |
五、C++变量作用域:
局部变量:在函数或一个代码块内部声明的变量。
形式参数:在函数参数的定义中声明的变量。
全局变量:在所有函数外部声明的变量。
局部作用域:在函数内部声明的变量具有局部作用域,局部变量只能在函数内部访问,在函数每次被调用时被创建,在函数执行完后被销毁。
全局作用域:在所有函数和代码块之外声明的变量具有全局作用域,全局变量可以被程序中的任何函数访问,在程序开始时被创建,在程序结束时被销毁。
块作用域:在代码块内部声明的变量具有块作用域,块作用域变量只能在代码块内部访问,在代码块每次被执行时被创建,在代码块执行完后被销毁。
类作用域:在类内部声明的变量具有类作用域,类作用域变量可以被类的所有成员函数访问。类作用域变量的生命周期与类的生命周期相同。
#include <iostream>
using namespace std;
int i = 3; // 全局变量声明
int main ()
{
int j = 10; // 局部变量声明
cout << j;
return 0;
}
#include <iostream>
class MClass {
public:
static int class_var; // 类作用域变量
};
int MClass::class_var = 30;
int main() {
std::cout << "类变量: " << MClass::class_var << std::endl;
return 0;
}
六、C++常量:
常量,又称字面量。常量是固定值。程序执行期间不会改变。
6.1、整数常量:
前缀指定基数:0x或0X表示十六进制,0表示八进制,不带前缀默认为十进制。整数常量可以带后缀,U代表无符号整数,L代表长整数。
6.2、浮点常量:
浮点常量有整数部分、小数点、小数部分和指数部分组成。可以用小数形式或者指数形式表示浮点常量。
6.3、布尔常量:
true、false。
6.4、字符常量:
字符常量是括在单引号中。
转义序列码:
转义序列 | 含义 |
\\ | \ 字符 |
\' | ' 字符 |
\" | " 字符 |
\? | ? 字符 |
\a | 警报铃声 |
\b | 退格键 |
\f | 换页符 |
\n | 换行符 |
\r | 回车 |
\t | 水平制表符 |
\v | 垂直制表符 |
\ooo | 一到三位的八进制数 |
\xhh . . . | 一个或多个数字的十六进制数 |
6.5、字符串常量:
字符串常量是括在双引号“”中。
常量的定义方式:#define、const关键字。常量定义为大写字母形式。
#define identifier value
const type variable = value;