·文章原创,转载请说明出处,联系信箱623730587@qq.com
一、c++中的bool类型
1 c语言中要使用bool类型,必须添加头文件<stdbool.h>,而c++中不需要导入头文件。
2 bool类型的变量可以和整数做运算。
3 bool类型在用作判断条件的时候,千万不要出现==的运算符,这是程序界的笑话,因为bool本身就表示真假。
4 c++中的bool类型的输出为0,或者1,如果想以true或者false的形式输出,那么得这样输出。但是有些机器不识
别这种写法。例如:
bool a = false ;
cout << boolalpha << a << endl;
二、c++中的符号替换(最好少用,因为这是为了照顾欧洲一些国家的键盘提出来的,这里只列出三条)
1 c语言中表达逻辑与用&&,c++中还可以用and来替换。
2 c语言中表达逻辑或用||,c++中还可以用or来替换。
3 c语言中的位与(&),C++中还可以用bitand。
三、c++中的函数重载
1 在同一作用域中,函数名相同,参数列表不同的函数构成重载。比如,在同一作用域里面有如下函数
show(int a);
show(double b);
show(int a , double b);
show(double b, int a);
以上函数均构成重载。
2 c++之所以提出重载的概念,其作用有二,方便函数调用和减少函数名的个数。这种作用看似不起眼,
但是在实际开发中却有着巨大的作用。
3 重载之所以在c++能够实现,是因为编译器在编译的时候,会综合参数列表来生成函数名,所以才会生成不
同的函数名,所以在最终调用的时候,调用的是不同的函数。而c语言的编译器不会考虑参数列表,如函数重名,
则报错。在linux环境下,可以使用g++ -c 的方式生成.o文件,用nm命令查看.o文件,就可以发现其中的函数名综
合了参数列表类型的首字母。或者使用gcc -S的命令生成汇编查看,都可看到生成的函数名。
4 函数指针的概念,有如下函数
double add(double x,double y);
去掉函数名,就是函数的类型,即函数add的类型为 double (double x,double y);变量也是一样,可以类比
要定义函数的指针,自然要用函数的类型加上指针运算符,和函数指针名即可,即
double (*padd)(double x,double y);
5 函数重载引入的问题
由于c++程序也可能调用c函数,但是c++生成的函数名还综合了参数列表的信息,而c语言编译生成的函数名
并不包含参数列表信息,那就造成了跨编译器调用的问题。
四、下篇详解跨编译器的问题。