C++是在C语言基础上为支持面向对象程序设计而研制的一个通用程序设计语言。
第一个程序
#include using namespace std;int main(void){ cout << "hello word"; // 打印输出不换行 cout << "hello word" << endl; // 不加这条语句using namespace std;会报错 std::cout << "hello word" << std::endl; // 这种打印输出的方式,不需要加using namespace std; return 0;}int a = 3;double b = 4.0;
#include
C++的头文件,这些头文件包括了程序中必须的或有用的相关信息。注:不需要加.husing namespace std;
告诉编译器使用std命名空间,命名空间是C++中的一个概念cout << "hello word";
打印输出不换行cout << "hello word" << endl;
打印输出(自动换行)- 在C++中,cout是一个输出流对象,用于向标准输出设备(通常是屏幕)输出数据。在输出数据时,我们需要使用插入运算符 << 将要输出的数据插入到cout对象中。endl是一个控制符,用于输出一个换行符并刷新输出缓冲区。如果需要在输出字符串后换行并刷新输出缓冲区,可以在字符串后面使用endl。
- endl:end of line
main()函数的变体
int main(void){} // void不写也行int main(){} int main(int agrc, const char* argv[]){}
常用关键字和标识符
C++语言字符分为6类:标识符、关键字、运算符、分隔符、常量、注释符
常用关键字
关键字 | 含义 |
---|---|
bool | 布尔类型 |
char | 字符类型 |
int long short | 整型、长整型、短整型 |
float double | 单精度、双精度浮点数 |
class struct union enum | 类、结构、联合体、枚举 |
const | 常量 |
unsigned 、signed | 无符号、有符号整型 |
void | 函数不返回值,或无类型指针 |
static | 静态变量或函数 |
extern | 外部变量 |
private protected public | 私有、保护、公有成员 |
friend | 友元函数 |
virtual | 虚函数 |
template | 模板 |
namespace | 命名空间 |
typedef | 类型别名 |
inline | 内联函数 |
语句定义符号
关键字 | 含义 |
---|---|
sizeof | 类型大小 |
new delete | 创建、释放对象 |
continue | 略过本次循环、进入下一个循环 |
throw | 抛出一个异常 |
try | 执行一段可能抛出异常的代码 |
catch | 处理抛出的异常 |
static_cast、const_cast、dynamic_cast、reinterpret_cast | 类型转换 |
this | 当前指针 |
false、true | 布尔假、布尔真 |
预处理命令
指令名称 | 功能 |
---|---|
## | 连字符 |
#error | 在编译过程中显示一条错误 |
#line | 设置行和文件信息 |
#pragma | 执行一条编译指令 |
#undef | 取消一个未定义变量 |
数据类型
#include using namespace std;int main(void){ cout << "bool的字节大小:" << sizeof(bool) << endl; cout << "char的字节大小:" << sizeof(char) << endl; cout << "int的字节大小:" << sizeof(int) << endl; return 0;}
基本数据类型:1个字节8位(1111 1111), 2 8 = 256 2^8 = 256 28=256
- char:一个字节,表示字符或小整数
数据在内存中的存储:
所有数据在计算机中存储时,都是以字节(byte)为基本单位的,字节是计算机存储空间的最小计量单位,1个字节为8bit
常量与转义字符
String是C++专有的数据常量
#include using namespace std;int main(void){ string strA = ""; string strB = "A"; string strAC = "ABC"; string strD = "我爱C++"; cout << "strA=" << strA << "strB=" << strB << endl; return 0;}
符号常量:const
符号常量在声明时一定要赋初值,在程序中不能改变其值。
在声明变量时,可以一次声明多个变量。
const int A = 1; // const 数据类型 常量名 = 常量值; int const A = 1; // 数据类型 const 常量名 = 常量值;int A = 10,B=20; // 一次声明多个变量
运算符优先级
从左到右
() [] -> . :: ++ –
自动转换与强制转换
自动转换规则:小类型总是被提升为大类型,从而减小精度损失。
强制转换:
(float) a; // 把a转换为float类型(int) (x+y); // 把x+y的结果转换为整型
C++特有的类型转换
- static_cast 静态类型转换
- reinterpret_cast 重新解释类型转换
- dynamic_cast 子类和父类之间的多态类型转换,动态类型转换
- const_cast 去掉const属性转换
一般结论:在C语言中能进行隐式转换的,在C++中,可用static_cast()进行类型转换。
在C语言中不能进行隐式类型转换的,在C++中可以用reinterpret_cast()进行强制转换。