define 与const都是用来定义常量的,但它们在使用特性上有一些区别。
const | define | |
---|---|---|
预处理和编译阶段 | 在编译和运行阶段使用 | 在预处理阶段进行 |
类型和安全检查 | 有类型,在编译阶段做安全检查(进行类型检查意味着更安全) | 没有类型,在预处理不做安全检查 |
存储空间 | 有 | 无 |
作用域 | 块级或文件级 | 全局 |
安全性 | 高 | 低 |
推荐使用场景 | 需要类型检查和明确作用域的常量 | 简单的文本替换 |
总结:const 只能在函数里面使用,它对常量有类型检查更安全;而define在全局中使用,没有类型检查
这让我想起了Javascript中的const,以下是javascript与C++ const的区别:
C++的 const | Javascript 的const | |
---|---|---|
定义方式 | 定义常量 | 定义常量 |
类型检查 | 有类型检查 | 无类型检查 |
作用域 | 块级作用域 | 块级作用域 |
修改限制 | 常量值不可修改 | 常量值不可修改 |
重复定义 | 不可重复定义 | 可重复定义 |
内存存储 | 常量值存储在内存中 | 常量值存储在内存中 |
总结:JS中的const s是没有类型检查的,而C++中的const 有类型检查。
需要注意的是,不管是C++中的const 还是define 定义常量的时候都不能用关键字。
C++不同于C语言中的输入,输出。在C语言中输入是scanf(),输出是printf()。而在C++中输入是cin,输出是cout。
在C++中不管是输入还是输出都统称叫流。
?
类别 | 子类 | 描述 |
---|---|---|
iostream | C++标准库的基类,提供通用输入输出功能(iostream 是 Input Output Stream 的缩写,意思是“输入输出流”,它包含了用于输入输出的对象,例如常见的cin 表示标准输入、cout 表示标准输出、cerr 表示标准错误) | |
输入流 | ios_base | C++标准库中的基类,提供输入输出流通用功能 |
istream | C++标准库中的类,提供标准输入流的实现 | |
iftream | C++标准库中的类,提供文件输入流的实现 | |
输出流 | ostream | C++标准库中的类,提供标准输出流的实现 |
ofstream | C++标准库中的类,提供文件输出流的实现 | |
字节串流 | stringstream | C++标准库中的类,提供字符串输入/输出流的实现 |
一般写cout要搭配<<和语句的末尾跟一个endl(end of line)?,而写cin一般跟>>。(这是语法规定没有为什么)
命名空间(namespace) 主要用来防止命名冲突,命名产生冲突的话会导致编译器报错或运行错误。这就像一个班上的双胞胎姐妹如果不用一些特征区别开来会很容易弄混。
常见的有std ,它是在C++标准库中的定义的关键字,一般与<iostream>的cin /cout使用。
C语言中并没有字符串这个数字类型,但C++中有string 这个关键字,一般是用来表示字符串类型,在<string>这个头文件中。
在C++中,bool是一种基本数据类型,用于表示布尔值,即true或false。bool类型的变量可以存储两个值中的一个。
至于其他的指针与运算符跟C语言类似。