C++基础笔记
基础部分
布尔bool 、字符型char 、整型int、浮点型float、双浮点型double、无类型void、宽字符型wchar_t
一些基本类型可以被类型类型修饰符所修饰
- signed
- unsigned
- short
- long
typedef声明–给类型取别名
typedef int feet;
feet num;
枚举类型
声明一个可选的类型名称和一组标识符,用来作为该类型的值
enum enum-name { list of names } var-list;
默认情况下,第一个名称的值为 0, 后面的+1
c++中的左值和右值
左值(lvalue):指向内存位置的表达式被称为左值(lvalue)表达式。左值可以出现在赋值号的左边或右边。
右值(rvalue):术语右值(rvalue)指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式,也就是说,右值可以出现在赋值号的右边,但不能出现在赋值号的左边。
局部变量和全局变量的初始化
当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动初始化,具体初始化的值请自行百度
定义常量
使用 #define 预处理器
使用 const 关键字
c++存储类
auto – 所有局部变量默认的存储类
register – 用于定义存储在寄存器中而不是 RAM 中的局部变量。
static – 指示编译器在程序的生命周期内保持局部变量的存在,而不需要在每次它进入和离开作用域时进行创建和销毁.因此,使用 static 修饰局部变量可以在函数调用之间保持局部变量的值。static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。
extern – 用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。
mutable – 仅适用于类的对象。它允许对象的成员替代常量。也就是说,mutable 成员可以通过 const 成员函数修改。
指针
指针是一个变量,其值为另一个变量的地址,即,内存位置的直接地址。
声明方式:
int *ip //一个整形的指针
所有指针的值的实际数据类型,不管是整型、浮点型、字符型,还是其他的数据类型,都是一样的,都是一个代表内存地址的长的十六进制数。不同数据类型的指针之间唯一的不同是,指针所指向的变量或常量的数据类型不同。
相关概念
- C++Null指针——C++ 支持空指针。NULL 指针是一个定义在标准库中的值为零的常量
- C++指针的算术运算——可以对指针进行四种算术运算:++、–、+、-
- C++指针vs数组——指针和数组之间有着密切的关系。
- C++指针数组——可以定义用来存储指针的数组。
- C++指向指针的指针——C++ 允许指向指针的指针。
- C++传递指针给函数——通过引用或地址传递参数,使传递的参数在调用函数中被改变。
- C++从函数返回指针——C++ 允许函数返回指针到局部变量、静态变量和动态内存分配。
C++引用
引用变量是一个别名,也就是说,它是某个已存在变量的另一个名字。一旦把引用初始化为某个变量,就可以使用该引用名称或变量名称来指向变量。
C++ 引用 vs 指针
- 不存在空引用。引用必须连接到一块合法的内存。
- 一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
- 引用必须在创建时被初始化。指针可以在任何时间被初始化。
C++ 中创建引用
1 | int i = 17; |
C++基本的输入输出
I/O库头文件
头文件 | 函数和描述 |
---|---|
iostream | 该文件定义了 cin、cout、cerr 和 clog 对象,分别对应于标准输入流、标准输出流、非缓冲标准错误流和缓冲标准错误流。 |
iomanip | 该文件通过所谓的参数化的流操纵器(比如 setw 和 setprecision),来声明对执行标准化 I/O 有用的服务。 |
fstream | 该文件为用户控制的文件处理声明服务。我们将在文件和流的相关章节讨论它的细节。 |
C++数据结构
为了定义结构,您必须使用 struct 语句。struct 语句定义了一个包含多个成员的新的数据类型,struct 语句的格式如下:
1 | struct Books{ |
访问结构成员
1 |
|
Tips: 使用typedef来简化数据结构的使用
C++面向对象
类的定义
1 | class Box |
派生类
1 |
|
一个派生类继承了所有的基类方法,但下列情况除外:
- 基类的构造函数、析构函数和拷贝构造函数。
- 基类的重载运算符。
- 基类的友元函数。
多继承
多继承即一个子类可以有多个父类,它继承了多个父类的特性。
C++ 类可以从多个类继承成员,语法如下:
1 | class <派生类名>:<继承方式1><基类名1>,<继承方式2><基类名2>,… |
C++ 中的运算符重载
Box operator+(const Box&);
Box operator+(const Box&, const Box&);
C++接口(抽象类)
如果类中至少有一个函数被声明为纯虚函数,则这个类就是抽象类。
抽象类不能被用于实例化对象,它只能作为接口使用。
1 | class Box |
- 标题: C++基础笔记
- 作者: DansRoh
- 创建于 : 2023-12-20 00:00:00
- 更新于 : 2024-06-21 19:58:00
- 链接: https://blog.shinri.me/2023/12/20/01_c++基础/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。