|簡體中文

比思論壇

 找回密碼
 按這成為會員
搜索



查看: 353|回復: 4
打印 上一主題 下一主題

C与C++的区别

[複製鏈接]

56

主題

0

好友

475

積分

中學生

Rank: 3Rank: 3

  • TA的每日心情

    2024-3-15 19:20
  • 簽到天數: 191 天

    [LV.7]常住居民III

    推廣值
    0
    貢獻值
    0
    金錢
    179
    威望
    475
    主題
    56
    樓主
    發表於 2014-7-18 20:55:09
    C++与C的区别
          1. 动态分配内存  
              1)C语言   
                a. malloc函数:在内存的动态存储区中分配一个长度为size的连续空间;       void *malloc(unsigned int size);
                b. calloc函数:在内存的动态存储区中分配n个长度为size的连续空间;        void *calloc(unsigned n, unsigned size);
                c. free函数:释放由p所指向的内存区        void free(void *p);   
                d. void指针类型:在将它的值赋给另一指针变量时要进行要进行强制类型转换使之适合于被赋值的变量的类型  
                e. realloc函数  
              2)C++
                a. new:只需指定其数据类型; 与在函数内定义的变量的初始化方式相同       动态创建对象:int *pi=new int;       动态创建数组:int *pia=new int[10];
                b. delete:对于动态创建的对象或数组,必须要显示释放;         释放对象:delete pi;       释放数组:delete [] pia;
                c. 在delete之后,重设指针的值;        delete命令释放了指针所指向对象所占用的内存空间;       在删除指针后,该指针变成悬垂指针;       一旦删除了指针所指向的对象,立即将指针置为0;
                d. 用new创建多维数组
                    1)new 类型名T[下标表达式1][下标表达式2]……;
                    2)如果内存申请成功,new运算返回一个指向新分配内存的首地址的指针,但不是T类型指针,而是一个指向T类型数组的指针,数组        元素的个数为除最左边一维外各维下标表达式的乘积。
          2. 输入与输出
              1)C语言: printf, scanf   <stdio.h>
              2)C++:cin,cout      <iostream>
          3. 重载:C++中允许对于符号和函数的重载;
              1)重载函数:相同作用域内形参个数或类型不同的函数 ;  
               a. 重载确定的三个步骤:候选函数;选择可行函数;寻找最佳匹配;
               b. 仅当形参是引用或指针时,形参是否为const才有影响;   
                   const引用或指针只能传给const对象;      
                   非const引用或指针可以传给非const对象,也可以通过类型转换后传给const对象;
              2)重载操作符:具有特殊名称的函数:保留字operator后接所需要定义的操作符符号;
               a. 不能通过连接其他合法符号来创建任何新的操作符;
               b. 重载操作符必须具有至少一个类类型或枚举类型的操作数;
               c. 优先级和结合性是固定的;   
               d. 不再具备短路求值特性,尤其是对逻辑操作&&,||
          4. 引用&:一种复合类型(复合类型是指用其他类型定义的类型);
              a. 非const引用必须用与该引用同类型的对象初始化,定义后不能再指向其他对象。  
              b. "const引用"是指向const对象的引用,可以初始化为不同但相关的类型的对象或者初始化为右值,如字面值常量,定义后不能再指向其他对象。   
          5. inline函数:编译时,将定义为内联函数的函数在程序中每个调用点上“内联的”展开;  
             a. 内联函数应在在头文件中定义;
             b. 与宏替换的区别:宏替换:编译前由预处理程序进行处理,只作简单的字符替换而不做语法检查;         
                                        内联函数:在编译时处理,进行语法检查;   
          6. 作用域操作符与命名空间:一个命名空间是一个作用域;
             a. 命名空间的定义:可以在全局作用域或其他作用域内部定义,但不能在函数或类的内部定义;
                   namespace cplusplus_primer{};
             b. 全局命名空间:定义在全局作用域的名字是定义在全局命名空间中的;
             c. 未命名的命名空间:定义局部于特定文件,从不跨越多个文本文件;  
                未命名的命名空间用于声明局部于文件的实体;
                在C语言中,程序必须将名字声明为static使之局部于一个文件;
             d. 从命名空间外部使用命名空间成员:作用域操作符::  
                 1).简化方法:using 声明;using std::cin;      
                 2).命名空间别名:namespace primer=cplusplus_primer;      
                     using指示: using namespace std;  (要避免这种用法)     
          7. 变量定义位置:  
              1)C语言:要求变量定义在程序的开始;  
              2)C++:要求在需要用到变量的时候再去定义;
          8. 带缺省值的函数:C++支持给函数定义一些默认值   
          9. 类与对象:C中的结构体类型就相当于C++中的类,结构体相当于C++中的对象
          10. 继承与派生:C++与C最大的区别
          11. 多态性:在一般类中定义的属性和行为,被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为;
               1)面向对象编程所依赖的多态性称为运行时多态性:应用于存在继承关系的类;
               2)泛型编程所依赖的多态性称为编译时多态性或参数式多态性:将程序所处理的对象的类型参数化,使一段程序可以用于处理多种不同类型的对象;
          12. 面向过程和面向对象;
               1)C语言:面向过程,
               2)C++:面向对象;
          13. 模板与泛型编程:
               1)泛型编程:以独立于任何特定类型的方式编写代码;使用泛型编程时,我们需要提供具体程序实例所操纵的类型或值;
               2)函数模板:typedef <typename 标识符>          函数定义
               3)类模板:  

    無效樓層,該帖已經被刪除
    無效樓層,該帖已經被刪除

    0

    主題

    0

    好友

    2037

    積分

    大學生

    Rank: 6Rank: 6

  • TA的每日心情
    奮斗
    昨天 08:23
  • 簽到天數: 73 天

    [LV.6]常住居民II

    推廣值
    0
    貢獻值
    0
    金錢
    17
    威望
    2037
    主題
    0
    地板
    發表於 2014-7-18 21:28:45
    請善用帖子右下角舉報鍵,來檢舉有害網站/垃圾/宣傳帖,每個舉報會有金錢增加。
    涨知识了。。
    不要把自己的東西藏起來,論壇需要你的分享才能成長!!
    重要聲明:本論壇是以即時上載留言的方式運作,比思論壇對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,讀者及用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,讀者及用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本論壇受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者及用戶發現有留言出現問題,請聯絡我們比思論壇有權刪除任何留言及拒絕任何人士上載留言 (刪除前或不會作事先警告及通知 ),同時亦有不刪除留言的權利,如有任何爭議,管理員擁有最終的詮釋權。用戶切勿撰寫粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。

    手機版| 廣告聯繫

    GMT+8, 2024-5-16 14:38 , Processed in 0.021568 second(s), 26 queries , Gzip On.

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回頂部