中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C++ class和struct有哪些區別

發布時間:2021-03-04 15:40:26 來源:億速云 閱讀:204 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關C++ class和struct有哪些區別,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

C++ 中保留了C語言的 struct 關鍵字,并且加以擴充。在C語言中,struct 只能包含成員變量,不能包含成員函數。而在C++中,struct 類似于 class,既可以包含成員變量,又可以包含成員函數。

C++中的 struct 和 class 基本是通用的,唯有幾個細節不同:

  • 使用 class 時,類中的成員默認都是 private 屬性的;而使用 struct 時,結構體中的成員默認都是 public 屬性的。

  • class 繼承默認是 private 繼承,而 struct 繼承默認是 public 繼承。

  • class 可以使用模板,而 struct 不能。

C++ 沒有拋棄C語言中的 struct 關鍵字,其意義就在于給C語言程序開發人員有一個歸屬感,并且能讓C++編譯器兼容以前用C語言開發出來的項目。

在編寫C++代碼時,我強烈建議使用 class 來定義類,而使用 struct 來定義結構體,這樣做語義更加明確。

使用 struct 來定義類的一個反面教材:

#include <iostream>
using namespace std;
struct Student{
  Student(char *name, int age, float score);
  void show();
  char *m_name;
  int m_age;
  float m_score;
};
Student::Student(char *name, int age, float score): m_name(name), m_age(age), m_score(score){ }
void Student::show(){
  cout<<m_name<<"的年齡是"<<m_age<<",成績是"<<m_score<<endl;
}
int main(){
  Student stu("小明", 15, 92.5f);
  stu.show();
  Student *pstu = new Student("李華", 16, 96);
  pstu -> show();
  return 0;
}

運行結果:
小明的年齡是15,成績是92.5
李華的年齡是16,成績是96

這段代碼可以通過編譯,說明 struct 默認的成員都是 public 屬性的,否則不能通過對象訪問成員函數。如果將 struct 關鍵字替換為 class,那么就會編譯報錯。

關于“C++ class和struct有哪些區別”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

苗栗市| 青浦区| 西安市| 东乌| 巴林左旗| 怀柔区| 鸡泽县| 垣曲县| 泰安市| 许昌市| 平和县| 临江市| 曲麻莱县| 香格里拉县| 钟山县| 兴国县| 新闻| 云梦县| 五峰| 浦东新区| 色达县| 台州市| 安宁市| 军事| 伊吾县| 读书| 汽车| 宜良县| 自治县| 通渭县| 普格县| 博爱县| 林西县| 巨鹿县| 定结县| 资兴市| 清徐县| 宜昌市| 昔阳县| 翁源县| 黄骅市|