c++教程(一)c过渡c++

来源:互联网 发布:星际淘宝网588 编辑:程序博客网 时间:2024/06/06 05:14

1.原生bool

c语言没有bool类型,c++中增加了bool类型,0为false,非0为true。

2.头文件包含区别

标准C++,如#include < iostream>;xxx.h 是c继承而来的;cxxx 是c继承而来,符合c++标准的。

3.域作用符

c++增加了域作用符,可以用namespace定义命名空间。

4.new,delete

c++采用new 在堆上申请空间,delete释放空间,new delete是运算符,malloc free是函数。

5.c++支持函数重载

函数重载指的是,函数名相同但是参数不同(参数类型不同,个数或者顺序不同),跟返回值无关。c语言是不支持函数名重复的。c++重载是通过根据参数来更改函数名的,函数调用时,会根据参数类型进行匹配,匹配方式包括:精准匹配:int->int提升匹配:char ->int float ->double类型转换:如,int -> unsigned int匹配冲突:当有多个匹配时,就会出现二义性

6.函数默认参数

c语言不支持函数默认参数,但c++支持,而且默认参数必须从右到左出现。

7.内联函数

c语言中定义内联是通过宏定义实现的。c++可以通过inline定义内联函数,但是c++中把函数体定义在类中也会是内联函数,实际项目中,通常setxxx,getxxx我们会定义成内联。内联不一定会成功,编译器会进行优化,一般是根据栈和展开度来判定是否是内联。
inline void printA(){    printf("hello\n");}

8.类型转换

c++中增加了四个类型转换符:

static_cast:不是强制转换,表示转换const_cast:const->非const,移除对象的常量性,不能修改内容。reinterpret_cast:强制转换,是二进制层面的强制转换。dynamic_cast:推导转换
int num = static_cast<int>(1.0003);int* np = nullptr;char *cp = reinterpret_cast<char*>(np);const int num1 = 10;int *np2 = const_cast<int*>(&num1);

9.引用

c++加入了引用,引用是别名,没有独立的空间,一旦绑定变量,再无法更改。

#include <iostream>void swap(int &a, int &b){    int temp = a;    a = b;    b = temp;}int main(void){    int a = 10;    int b = 20;    swap(a, b);    std::cout << a << b << std::endl;    //const变量只能赋给const引用。    const int num = 30;    const &refNum = num;    return 0;}
1 0