1.linux 下编译c 用的编译器是 gcc ;编译c++ 用的编译器是 g++
2.类库 微软的是MFC . ;;; Qt类库是跨平台的,windows 下的类库不能跨平台。
c++ 是面向对象的编程思想。 有23种设计模式。
在c++中 “cout <<” 表示流插入; << endl(操控子) 相当于’\n’; c++ 11标准 (2017年发布) 。 c++ 17标准(2018年发布)。
3… \000 (表示8进制) \x 0000(表示16进制)
4.c语言中 auto int a; (表示变量a是自动周期变量,一般我们都不加 auto);;;;
在c++中 可以 auto i=10+8;(不写变量i的类型,编译器会自动识别初始化变量的类型,从而把i认为是和后面初始值一样的类型)
5.register int i; 建议编译器将变量放到寄存器中。。
6.extern int i; 表明是一个外部变量。
7.static int i; 表明是一个静态的变量。
8.const int i; 表明是一个常量;
9.对于枚举类型按常量处理,不能对其赋值。不允许整型向枚举赋值,可以枚举赋值为整型。 double 向int 赋值会小数截断。
10.栈帧, 每个函数都有自己的栈帧。
11.引用相当于别名 (int i = 6; int &ref=i ) 引用必须初始化。
int &ref = 10; 这样写法是错误的 ,因为ref 是要一个可读可写的值给它, 而 10 是常量,常量是不可被写的。
const int &ref = 10; 这样可以因为 const int &ref 要一个常量。 符合要求。 如果 int i =10 ;const int &ref = i;这种也是正确的i可读可写。但ref 要的值只要可读就行了
12. 引用与指针都可以修改函数外变量达到值,二者有什么区别?
(1)指针可以不用初始化,但引用必须要初始化。
(2)有空指针,但没有空引用
(3)指针本身占四字节空间,而引用自身不占空间。
13.内联函数, 用inline 修饰,如果当一个函数,里面非常简单时,如果进行入栈,出栈,操作时浪费的代价远远大于所要执行命令的代价,这时候就可以使用内联函数inline
对其进行展开,。。,inline 也是一个建议,至于将不将函数直接展开还是取决于编译器。
如果使用内联函数,则在主调函数之前必须要有内联函数的定义。
14.重载函数 ,
int abc(int a, int b, int c=0)
{
return a+b+c;
}
//cout << abc(1,2) << endl; 这个输出结果为3
这样写可以虽然参数个数不够,但 c已经在内部初始化了。即使不穿c 的实参也是可以的。
//cout << abc(1,2,3) << endl;
这个输出结果为错
int abc(int a=0, int b=0, int c)
{
return a+b+c;
}
这种写法是错误的,应该先给右边的初始化。如果要初始化值时应该从()里面右边开始,如:下面这样是真确的
int abc(int a, int b=0, int c=0)
{
return a+b+c;
}
int abc(int a, int b=0, int c=0)
{
cout<< “a:” << a<< endl;
cout<< “b” <<b<< endl;
cout<< “c” <<c << endl;
return a+b+c;
}
cout << abc(1,2) << endl;
打印的结果是 a :1
b :2
c :0
输出为:3
则可以说明,向函数里面传参时是从左开始向右传递的。