C与C++的区别-----臭飯飯

本文深入探讨C与C++的显著差异,包括头文件名的不同、内联函数的使用、函数重载特性、const限定符的应用、空类的大小、参数默认值及初始化列表的处理,以及动态内存分配与回收的机制。

博主:臭飯飯

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.youkuaiyun.com/kekuixiong/article/details/6652254
      • 【问题】类的成员方法类体内定义 和 在类外定义,的区别?
        • 类外定义的成员方法,在方法名字前面加 类型的作用域 类外定义的在调用时,势必有函数调用开销
        • 类体内定义的函数,都自动处理成 inline内联函数
    • 函数重载
      返回值类型 不管
      ​如果 有多个函数的名字相同(若没有函数重载,最终函数生成的函数符号相同)
      ​但是 形参列表 不同(参数类型不同 或 参数个数不同)
    • 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;
              //【正确】可以用过指针间接 访问变量的值
              所以是:常变量​
        • 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;
    • 问题】空类(结构体) 的大小?
      • C: 不支持空结构体(Windows下
        认为结构体是将相关联的数据打包成一个整体,所以至少有一个变量。
        • Linux 下 支持空结构体 size = 0
      • C++: 1
        编译器为每个(结构体)类型数据至少预留 1 个 byte的空间
        • struct 与 class 的区别:
          • struct 成员默认情况下属性是 public 的。
          • class 成员默认情况下属性是 private 的。
    • 参数带默认值的函数 && 初始化列表
      C++ 特有
    • 动态开辟内存
      new/malloc  delete/free
    • C++中定义了4种新式类型转换
      为了解决C语言中的旧式类型转换

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值