繼承:C + +支持多重繼承,C#類只能繼承一個基類的實現(xiàn),但可以實現(xiàn)多個接口。
10年積累的成都做網(wǎng)站、網(wǎng)站設(shè)計經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認識你,你也不認識我。但先網(wǎng)站設(shè)計后付款的網(wǎng)站建設(shè)流程,更有城陽免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
數(shù)組:聲明C#數(shù)組和C + +數(shù)組的語法不同的報表中。在C#中,“[]”標記出現(xiàn)在后面的數(shù)組類型。
3。數(shù)據(jù)類型:C + +,布爾類整數(shù)轉(zhuǎn)換,但C#bool類型和其他類型(int)轉(zhuǎn)換。 long類型:C#中,long數(shù)據(jù)類型為64,而在C + + 32。
4.struct類型:在C#類和結(jié)構(gòu)的不同語義。 struct是值類型,而類是引用類型。
5.switch聲明:switch語句在C + +,C#不支持從一個case標簽貫穿到另一個case標簽。在
6.delegate類型:委托與C + +函數(shù)指針基本相似,但前者具有類型安全的,它是安全的。
7。從派生類中重寫,調(diào)用基類的成員?;?/p>
8。使用new修飾符顯式隱藏繼承的成員。
9。父類的方法重寫方法需要使用虛擬名聲子類方法override關(guān)鍵字。
10。預(yù)處理器指令條件編譯。 C#不使用頭文件。 C#預(yù)處理器指令
11異常處理:終于說明書上介紹的C#,C + +沒有。
12.C#運算符:C#支持其他運營商,如和typeof。還介紹了一些邏輯運算符的不同功能。
13只能被稱為是靜態(tài)的,靜態(tài)方法的使用,通過改變靜態(tài)變量的類的名稱。
14。替代C + +初始化列表,在基類的構(gòu)造方法。
15.Main方法和C + +和Java,主要功能聲明的,主要的,而不是與主
16方法參數(shù):C#支持ref和out參數(shù),這是用來參考的,而不是指針傳遞參數(shù)。
17。只使用不安全的不安全模式下指針在C#。
18。在C#運算符重載以不同的方式進行。
19。字符串:C#從C + +字符串的字符串是不同的。
20.foreach:從VB引進C#foreach關(guān)鍵字允許遍歷數(shù)組和集合。
21.C#全局方法和全局變量:方法和變量必須包含在類型聲明(如類或結(jié)構(gòu))。的
22.C#頭文件和#include指令:指令是用來指不完全限定的類型名稱命名空間的類型。
#23.C當?shù)氐淖兞坎荒鼙挥糜诔跏蓟啊?/p>
24析構(gòu)函數(shù):C#,無法控制的,因為析構(gòu)函數(shù)由垃圾收集器會自動調(diào)用析構(gòu)函數(shù)的調(diào)用時間。
25析構(gòu)函數(shù)構(gòu)造函數(shù):C + +類似的C#類的構(gòu)造函數(shù)是自動生成的默認構(gòu)造函數(shù)。默認構(gòu)造函數(shù)將所有字段初始化為它們的默認值。
26。,方法的參數(shù)不能有默認值嗎?在C#。如果你想獲得同樣的效果,你需要使用方法重載。
另一個區(qū)別:
C + +希望提供先進的面向?qū)ο蟮墓δ埽瑫r提供良好的性能,在設(shè)計初期。然而,為了確保兼容的程序和以前的知識,開發(fā)C + +和C語言幾乎完全兼容?,F(xiàn)代計算機C語言本身是一個高層次的抽象,你可以直接訪問的地址,幾乎所有的內(nèi)存地址可以通過指針訪問堆和棧的結(jié)構(gòu)反映了等待。當然,C + +也具有這樣的特性。用c + +的逐步發(fā)展,引入泛型編程泛型編程技術(shù)和STL標準模板庫,C + +和C的不同成長?;旧鲜荂 + +是專為高效利用的大型高性能面向?qū)ο蠹夹g(shù)或通用技術(shù)(通常比較低級別的應(yīng)用程序)編寫的應(yīng)用程序在。
C#底層的虛擬機機制,以減少C / C + +語言往往容易出現(xiàn)內(nèi)存泄漏和安全問題,成本的降低運行速度。簡化的編程語言(C#比C + +更簡單低得多)的復(fù)雜性,誰擁有的開發(fā)大大提高了效率。 C#的凈巨大的類庫,這樣的好處是c + +沒有。因此,C#適當?shù)募庸I(yè)務(wù)應(yīng)用程序的開發(fā)企業(yè)。同時,微軟的操作系統(tǒng),服務(wù)器程序,桌面應(yīng)用程序。 Net平臺的統(tǒng)一。在歷史上只有在轉(zhuǎn)化的過程中,從16位平臺到32位平臺(微軟技術(shù))時代,微軟類似的情況發(fā)生。因此,為開發(fā)商的凈變化可能是痛苦的(因為有很多新的東西學(xué)習(xí)),但也充滿了機會。
事實上,有很多相同的地方。我希望能幫助你。
類是編程人員表達自定義數(shù)據(jù)類型的C++機制。它和C語言中的結(jié)構(gòu)類似,C++類
支持數(shù)據(jù)抽象和面向?qū)ο蟮某绦蛟O(shè)計,從某種意義上說,也就是數(shù)據(jù)類型的設(shè)
計和實現(xiàn)。
那么
String
類的原型如下
class
String
{
public:
String(const
char
*str=NULL);
//構(gòu)造函數(shù)
String(const
String
other);
//拷貝構(gòu)造函數(shù)
~String(void);
//析構(gòu)函數(shù)
String
operator=(const
String
other);
//等號操作符重載,賦值函數(shù)
ShowString();
private:
char
*m_data;
//字符指針
};
String::~String()
{
delete
[]
m_data;
//析構(gòu)函數(shù),釋放地址空間
}
String::String(const
char
*str)
{
if
(str==NULL)//當初始化串不存在的時候,為m_data申請一個空間存放'/0';
{
m_data=new
char[1];
*m_data='/0';
}
else//當初始化串存在的時候,為m_data申請同樣大小的空間存放該串;
{
int
length=strlen(str);
m_data=new
char[length+1];
strcpy(m_data,str);
}
}
String::String(const
String
other)//拷貝構(gòu)造函數(shù),功能與構(gòu)造函數(shù)類似。
{
int
length=strlen(other.m_data);
m_data=new
[length+1];
strcpy(m_data,other.m_data);
}
String
String::operator
=(const
String
other)
//賦值函數(shù)
{
if
(this==other)//當?shù)刂废嗤瑫r,直接返回;
return
*this;
delete
[]
m_data;//當?shù)刂凡幌嗤瑫r,刪除原來申請的空間,重新開始構(gòu)造;
int
length=sizeof(other.m_data);
m_data=new
[length+1];
strcpy(m_data,other.m_data);
return
*this;
}
String::ShowString()//由于m_data是私有成員,對象只能通過public成員函數(shù)來訪問;
{
coutthis-m_dataendl;
}
測試一下:
main()
{
String
AD;
char
*
p="ABCDE";
String
B(p);
AD.ShowString();
AD=B;
AD.ShowString();
}
構(gòu)造函數(shù)錯了,不是析構(gòu)函數(shù)錯了,看下面:
#include?iostream???//?包含頭文件iostream
using?namespace?std;??//?使用命名空間std
class?Course
{
public:
Course(int?pId,?char*?pName,?int?pHours,?char*?pTeacherInCharge);
void?printCourse();
~Course();
private:
int??id;
char?*name;
int??hours;
char?*teacherInCharge;
};
Course::Course(int?pId,?char*?pName,?int?pHours,?char*?pTeacherInCharge)
{
id=pId;
hours=pHours;
name=?new?char[strlen(pName)+1];?
if?(name?!=NULL)?strcpy(name,pName);//name=pName;
teacherInCharge=?new?char[strlen(pTeacherInCharge)+1];?
if(teacherInCharge!=NULL)?strcpy(teacherInCharge,pTeacherInCharge);//teacherInCharge=pTeacherInCharge;
}
void?Course::printCourse()
{
cout"ID??""NAME??""HOURS???""TEACHINCHARGE???"endl;
coutidname?hoursteacherInChargeendl;
}
Course::~Course()
{
cout"destructing……"endl;
delete[]?name;
delete[]?teacherInCharge;
}
int?main?()
{
Course?c[3]={Course(0001,"lili",36,"zhangsan"),Course(0002,"sary",36,"wanger"),Course(0003,"mary",36,"zhaoqian")};
for?(int?i=0;i3;i++)
c[i].printCourse();
return?0;
}
c++ 析構(gòu)函數(shù)調(diào)用時間:
1、對象生命周期結(jié)束,被銷毀時;
2、delete指向?qū)ο蟮闹羔槙r,或delete指向?qū)ο蟮幕愵愋椭羔?,而其基類虛?gòu)函數(shù)是虛函數(shù)時;
3、對象i是對象o的成員,o的析構(gòu)函數(shù)被調(diào)用時,對象i的析構(gòu)函數(shù)也被調(diào)用。
C++是C語言的繼承,它既可以進行C語言的過程化程序設(shè)計,又可以進行以抽象數(shù)據(jù)類型為特點的基于對象的程序設(shè)計,還可以進行以繼承和多態(tài)為特點的面向?qū)ο蟮某绦蛟O(shè)計。C++擅長面向?qū)ο蟪绦蛟O(shè)計的同時,還可以進行基于過程的程序設(shè)計,因而C++就適應(yīng)的問題規(guī)模而論,大小由之。
C++不僅擁有計算機高效運行的實用性特征,同時還致力于提高大規(guī)模程序的編程質(zhì)量與程序設(shè)計語言的問題描述能力。
擴展資料:
C++語言特點:
1、支持繼承和重用
在C++現(xiàn)有類的基礎(chǔ)上可以聲明新類型,這就是繼承和重用的思想。通過繼承和重用可以更有效地組織程序結(jié)構(gòu),明確類間關(guān)系,并且充分利用已有的類來完成更復(fù)雜、深入的開發(fā)。新定義的類為子類,成為派生類。它可以從父類那里繼承所有非私有的屬性和方法,作為自己的成員。
2、支持多態(tài)性
采用多態(tài)性為每個類指定表現(xiàn)行為。多態(tài)性形成由父類和它們的子類組成的一個樹型結(jié)構(gòu)。在這個樹中的每個子類可以接收一個或多個具有相同名字的消息。當一個消息被這個樹中一個類的一個對象接收時,這個對象動態(tài)地決定給予子類對象的消息的某種用法。多態(tài)性的這一特性允許使用高級抽象。
繼承性和多態(tài)性的組合,可以輕易地生成一系列雖然類似但獨一無二的對象。由于繼承性,這些對象共享許多相似的特征。由于多態(tài)性,一個對象可有獨特的表現(xiàn)方式,而另一個對象有另一種表現(xiàn)方式。
參考資料來源:百度百科-C++
構(gòu)造函數(shù)通常用于在實例化對象時自動對內(nèi)部數(shù)據(jù)成員初始化,設(shè)置初始值、分配內(nèi)存空間等。 而析構(gòu)函數(shù)則用于刪除對象時做收尾工作,比如釋放申請的空間等。 要創(chuàng)建一個對象,就得調(diào)用構(gòu)造函數(shù)。 要銷毀一個對象,就會被迫的調(diào)用析構(gòu)函數(shù)。