C到C++

Posted 此胸险让我来

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C到C++相关的知识,希望对你有一定的参考价值。

1. 新类型 布尔 引用

整型         int       long
浮点型       float     double
字符类型     char    
布尔         bool

bool 存放真(1)和假(0)的类型 大小1个字节 可以存放true    false
指针 存放地址的变量 可以间接修改变量的值 
定义的时候可以不用赋值 使用的时候 如果不赋值不可以解引用 使用的是指向的变量
引用 变量的别名 使用引用和使用变量是一样的 
定义的时候必须绑定一个变量 绑定之后不可以让引用指向别的变量

2. 函数 内联 重载 缺省

2.1 内联inline

    宏定义#define 不带参数 可以替换简单的函数 不能替换复杂函数 先替换再计算
    没有函数的跳转时间 增长代码长度 节约运行时间长度 耗费内存 建议使用内联函数替换带参宏
    区别:
    1.内联函数 参数有类型(更安全) 带参宏没有类型
    2.带参宏 先替换再计算 需要考虑优先级问题
      内联函数 先计算 然后结果带进去 不需要考虑优先级问题
    内联inline关键字 放到函数前面 建议这个函数用内联的方式编译
    `inline void(int& a)//函数面前加上inline关键字称之为内联函数
    {
        a = 2;
    }` 

2.2 重载 C++允许函数重名

    函数定义 允许重名
    函数返回值类型/参数名字不一样不构成重载 主要看参数
    函数参数个数不一样 构成重载
    void fun(int a);
    int fun(int aa, int bb);
    
    函数参数类型不一样 构成重载
    void fun(int a);
    int fun(double b);

2.3 缺省 给函数形参一个默认值

    调用函数的时候 有默认值的形参可以不用传递参数 声明/定义的时候赋值
    缺省必须从右往左
    void fun_1(int a, int b, int c = 1);
    fun_1(3, 2);
    void fun_2(int aa, int bb = 12, int cc = 11);
    fun_2(13);
    
    缺省和重载 引发一个二义性问题 两个函数构成重载 但是调用的时候两个函数都可以匹配
    void fun_3(int a, int b = 2);
    void fun_3(int a, int b = 4, int c = 6);
    fun_3(1);//此时都可以调用

3.C++申请内存 new delete

C语言 申请堆内存 malloc 释放 free 头文件 stdlib.h
int* p = (int*)malloc(sizeof(int)*20);//申请内存
free(p);//释放内存

C++申请内存 使用new 释放内存 使用delete
int* p = new int;//申请一个int;
delete p;//释放一个
int* pp = new int[20];//申请20个 new 类型[个数]
delete[] pp;//释放多个

申请内存的时候给他赋初值
int* p = new int(20);//()表示初值
int* pp = new int[20]{1, 2, 3. 4. 5};//赋予多个初值

4.C++的输入输出方式

stdio.h C语言输入输出头文件 io input输入 output输出 standard标准
iostream io 输入输出 stream流
count<<输出的内容<<endl;//endl表示换行 输出数据
cin>>变量;//输入数据

以上是关于C到C++的主要内容,如果未能解决你的问题,请参考以下文章

有趣的 C++ 代码片段,有啥解释吗? [复制]

更新:C++ 指针片段

C++ 解释器/控制台/片段编译器

这些 C++ 代码片段有啥作用?

此 Canon SDK C++ 代码片段的等效 C# 代码是啥?

如何有条件地将 C 代码片段编译到我的 Perl 模块?