欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ class和struct到底有什么區(qū)別詳解

 更新時(shí)間:2021年03月04日 14:34:19   投稿:zx  
這篇文章主要介紹了C++ class和struct到底有什么區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

C++ 中保留了C語(yǔ)言的 struct 關(guān)鍵字,并且加以擴(kuò)充。在C語(yǔ)言中,struct 只能包含成員變量,不能包含成員函數(shù)。而在C++中,struct 類似于 class,既可以包含成員變量,又可以包含成員函數(shù)。

C++中的 struct 和 class 基本是通用的,唯有幾個(gè)細(xì)節(jié)不同:

  • 使用 class 時(shí),類中的成員默認(rèn)都是 private 屬性的;而使用 struct 時(shí),結(jié)構(gòu)體中的成員默認(rèn)都是 public 屬性的。
  • class 繼承默認(rèn)是 private 繼承,而 struct 繼承默認(rèn)是 public 繼承。
  • class 可以使用模板,而 struct 不能。

C++ 沒(méi)有拋棄C語(yǔ)言中的 struct 關(guān)鍵字,其意義就在于給C語(yǔ)言程序開(kāi)發(fā)人員有一個(gè)歸屬感,并且能讓C++編譯器兼容以前用C語(yǔ)言開(kāi)發(fā)出來(lái)的項(xiàng)目。

在編寫C++代碼時(shí),我強(qiáng)烈建議使用 class 來(lái)定義類,而使用 struct 來(lái)定義結(jié)構(gòu)體,這樣做語(yǔ)義更加明確。

使用 struct 來(lái)定義類的一個(gè)反面教材:

#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<<",成績(jī)是"<<m_score<<endl;
}
int main(){
  Student stu("小明", 15, 92.5f);
  stu.show();
  Student *pstu = new Student("李華", 16, 96);
  pstu -> show();
  return 0;
}

運(yùn)行結(jié)果:
小明的年齡是15,成績(jī)是92.5
李華的年齡是16,成績(jī)是96

這段代碼可以通過(guò)編譯,說(shuō)明 struct 默認(rèn)的成員都是 public 屬性的,否則不能通過(guò)對(duì)象訪問(wèn)成員函數(shù)。如果將 struct 關(guān)鍵字替換為 class,那么就會(huì)編譯報(bào)錯(cuò)。

到此這篇關(guān)于C++ class和struct到底有什么區(qū)別詳解的文章就介紹到這了,更多相關(guān)C++ class struct內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論