1.关于命名空间的问题
真正的开发过程中, 尽量避免使用 using namespace std; 等直接引入整个命名空间,否则会因为命名空间污染导致很多不必要的问题, 比如自己写的某个函数,名称正好和 std 中的一样, 编译器会不知道使用哪一个, 引起编译报错, 建议使用:
std::cout << "Hello World" << std::endl;
2.关于头文件引用问题
<> 先去系统目录中找头文件,如果没有在到当前目录下找。所以像标准的头文件 stdio.h、stdlib.h 等用这个方法。
" " 首先在当前目录下寻找,如果找不到,再到系统目录中寻找。 这个用于 include 自定义的头文件,让系统优先使用当前目录中定义的。
3.c++简介
C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。
注意:使用静态类型的编程语言是在编译时执行类型检查,而不是在运行时执行类型检查。
4.c++几大特征
继承,封装,多态,抽象
5.c++的三个重要部分
标准的 C++ 由三个重要部分组成:
核心语言,提供了所有构件块,包括变量、数据类型和常量,等等。
C++ 标准库,提供了大量的函数,用于操作文件、字符串等。
标准模板库(STL),提供了大量的方法,用于操作数据结构等。
6.gcc,g++ 在Mac上的获取方式
Mac OS X 上的安装
如果您使用的是 Mac OS X,最快捷的获取 GCC 的方法是从苹果的网站上下载 Xcode 开发环境,并按照安装说明进行安装。一旦安装上 Xcode,您就能使用 GNU 编译器。
Xcode 目前可从 developer.apple.com/technologies/tools/ 上下载。
7.g++编译可执行文件
g++ -o name name.cpp
g++ -std=c++11 -o name name.cpp
8.c++关键字
C++ 关键字
| asm | else | new | this | auto | enum | operator | throw | bool | explicit | private | true |
| break | export | protected | try | case | extern | public | typedef | catch | false | register | typeid | char | float | reinterpret_cast | typename | class | for | return | union |
| const | friend | short | unsigned | const_cast | goto | signed | using | continue | if | sizeof | virtual | default | inline | static | void | delete | int | static_cast | volatile | do | long | struct | wchar_t | double | mutable | switch | while | dynamic_cast | namespace | template | |
完整关键字介绍可查阅:C++ 的关键字(保留字)完整介绍
9.关于返回值
main 函数的返回值是返回给主调进程,使主调进程得知被调用程序的运行结果。
标准规范中规定 main 函数的返回值为 int,一般约定返回 0 值时代表程序运行无错误,其它值均为错误号,但该约定并非强制。
如果程序的运行结果不需要返回给主调进程,或程序开发人员确认该状态并不重要,比如所有出错信息均在程序中有明确提示的情况下,可以不写 main 函数的返回值。在一些检查不是很严格的编译器中,比如 VC, VS 等,void 类型的 main 是允许的。不过在一些检查严格的编译器下,比如 g++, 则要求 main 函数的返回值必须为 int 型。
所以在编程时,区分程序运行结果并以 int 型返回,是一个良好的编程习惯。
- 注释
if 后可以是任意的条件语句。
下面的代码如果 condition 条件为 tre 执行 code1 ,否则执行 code2。
if condition
code1
else
code2
endif
11.类型
12.typedef
typedef 可以声明各种类型名,但不能用来定义变量。用 typedef 可以声明数组类型、字符串类型,使用比较方便。
用typedef只是对已经存在的类型增加一个类型名,而没有创造新的类型。
当在不同源文件中用到同一类型数据(尤其是像数组、指针、结构体、共用体等类型数据)时,常用 typedef 声明一些数据类型,把它们单独放在一个头文件中,然后在需要用到它们的文件中用 #include 命令把它们包含进来,以提高编程效率。
使用 typedef 有利于程序的通用与移植。有时程序会依赖于硬件特性,用 typedef 便于移植
typedef unsigned int size_t;
13.枚举类型
include <iostream>
using namespace std;
int main()
{
enum Weekend{Zero,One,Two,Three,Four};
int a,b,c,d,e;
a=Zero;
b=One;
c=Two;
d=Three;
e=Four;
cout<<a<<","<<b<<","<<c<<","<<d<<","<<e<<endl;
return 0;
}
14.extern 变量声明
变量声明向编译器保证变量以给定的类型和名称存在,这样编译器在不需要知道变量完整细节的情况下也能继续进一步的编译。变量声明只在编译时有它的意义,在程序连接时编译器需要实际的变量声明。
当您使用多个文件且只在其中一个文件中定义变量时(定义变量的文件在程序连接时是可用的),变量声明就显得非常有用。您可以使用 extern 关键字在任何地方声明一个变量。虽然您可以在 C++ 程序中多次声明一个变量,但变量只能在某个文件、函数或代码块中被定义一次。
15.类型转换
变量的类型间是可以互相转换的,转换又分为自动转换和强制转换。
自动转换规则:
1、若参与运算量的类型不同,则先转换成同一类型,然后进行运算。
2、转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算。 a、若两种类型的字节数不同,转换成字节数高的类型 b、若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型
3、所有的浮点运算都是以双精度进行的,即使仅含float单精度量运算的表达式,也要先转换成double型,再作运算。
4、char型和short型参与运算时,必须先转换成int型。
5、在赋值运算中,赋值号两边量的数据类型不同时,赋值号右边量的类型将转换为左边量的类型。如果右边量的数据类型长度比左边长时,将丢失一部分数据,这样会降低精度:
16.变量作用域与初始化
当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动初始化为下列值:
数据类型 初始化默认值
int 0
char '\0'
float 0
double 0
pointer NULL
当变量间出现重名的情况下,作用域小的屏蔽作用域大的,所以上面第一个 cout 输出 b 的值为 1,但由于在块里面申请的变量作用域只限于当前块,所以离开这个块后变量会自动释放,所以第二个 cout 输出 b 的值为 2。
全局变量的值能被局部重新赋值。
17.常量
85 // 十进制
0213 // 八进制
0x4b // 十六进制
30 // 整数
30u // 无符号整数
30l // 长整数
30ul // 无符号长整数
布尔常量共有两个,它们都是标准的 C++ 关键字:
true 值代表真。
false 值代表假。
define identifier value
const type variable = value;
请注意,把常量定义为大写字母形式,是一个很好的编程实践。
18.修饰符
修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。
修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。例如:unsigned long int。
C++ 允许使用速记符号来声明无符号短整数或无符号长整数。您可以不写 int,只写单词 unsigned、short 或 unsigned、long,int 是隐含的。例如,下面的两个语句都声明了无符号整型变量。
19.限定修饰符
20.explict
21.存储类
auto,extern,static,mutable
22.函数
23.lamda表达式
例子:http://www.runoob.com/cplusplus/cpp-functions.html
24.数学符号
25.随机函数
26.字符串
27.指针
http://www.runoob.com/cplusplus/cpp-pointers.html
28.引用
29.日期函数
30.输入输出
http://www.runoob.com/cplusplus/cpp-basic-input-output.html