C与C++的区别—–臭飯飯


博主:臭飯飯

ID:weixin_42313564

幕布(软件):【账号ID】1398637

版权声明:本文为博主原创文章,转载请附上博文链接!


博主文章链接:https://mubu.com/doc/explore/16932(使用的幕布笔记)

 

C与C++的区别—–臭飯飯

  • C 与 C++ 的区别
    • 头文件名
      • C语言: #include <stdio.h>
      • C++: #include <cstdio>
      • #include <iostream>
      • using namespace std;
    • inline 内联函数
      C89 与 C99的区别
      • https://blog.csdn.net/kekuixiong/article/details/6652254
      • 【问题】类的成员方法类体内定义 和 在类外定义,的区别/strong>
        • 类外定义的成员方法,在方法名字前面加 类型的作用域 类外定义的在调用时,势必有函数调用开销
        • 类体内定义的函数,都自动处理成 inline内联函数
    • 函数重载
      返回值类型 不管
      果 有多个函数的名字相同(若没有函数重载,最终函数生成的函数符号相同)
      形参列表 不同(参数类型不同 或 参数个数不同)
      • https://blog.csdn.net/lf_2016/article/details/51769789
      • 注意:main函数不能重载,因为程序的入口只能有一个
      • 函数重载仅仅是语法层面的,本质上它们还是不同的函数,占用不同的内存,入口地址也不一样
    • const 限定修饰符
      C++编译器对 const常量的处理当碰见常量声明时,在符号表中放入常量;
      译过程中若发现使用常量则直接以符号表中的值替换。
      译过程中若发现对 const使用了 extern或者 &操作符,则给对应的常量分配存储空间(为了兼容C)。C++编译器虽然可能为const常量分配空间(进行&运算时候),但不会使用其存储空间中的值。
      • 修饰函数
        • c++中,const可以修饰类的成员函数,
        • 但在 c 中,不能修饰函数。 
        • void Time :: fun() const ;
          // fun 是 Time类的常成员函数
          注意】可以引用,但不能修改本类中的数据成员
      • 变量
        • C语言:
          • const: 常变量(只读变量,具有不可变性)
            eg.
            • const int Max =100;
            • //int Array[Max];
              报错】,是常变量
            • int*p=&Max ;
            • *p=500;
              //【正确】可以用过指针间接 访问变量的值
              所以是:常变量/span>
        • C++:
          • const: 常量 编译方式:所有使用常量名字的地方,替换常量的值
            与宏定义对比:const常量有数据类型,而宏常量没有数据类型。
          • const: 常变量   就看初始值是不是一个立即数 10 20 30
            • const int &rx = 2;
              //将常量赋给相关类型
            • //int &rx = 2;
              【错误】 编译出错

 

            •  
    • & 引用
      汇编层面指针 一模一样
      • int a = 10;
      • int *p = &a;
      • int &b = a;
      • *p = 20;
      • b = 30;
    • 问题】空类(结构体) 的大小/span>
      • C: 不支持空结构体(Windows下
        认为结构体是将相关联的数据打包成一个整体,所以至少有一个变量。
        • Linux 下 支持空结构体 size = 0
      • C++: 1
        编译器为每个(结构体)类型数据至少预留 1 个 byte的空间
        • struct 与 class 的区别:
          • struct 成员默认情况下属性是 public 的。
          • class 成员默认情况下属性是 private 的。
    • 参数带默认值的函数 && 初始化列表
      C++ 特有
      • 参数带默认值的函数
        • Test ( int a=10, int b=10) : ma(a),mb(b) {}
      • 初始化列表
        • https://blog.csdn.net/WS1347913745/article/details/8682331
    • 动态开辟内存
      new/malloc  delete/free
    • C++中定义了4种新式类型转换
      为了解决C语言中的旧式类型转换
      • https://blog.csdn.net/u014038273/article/details/76147956
      • static_cast
      • const_cast
      • dynamic_cast
      • reinterpret_cast

 

 

来源:臭飯飯

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年9月27日
下一篇 2018年9月27日

相关推荐