㈠ 如何給C語言結構體中的成員賦默認值
可以用成員符號對結構體賦默認值。
比如:
struct date
{
nt month;
int day;
int year;
};
struct student
{
char name[20];
struct date birthday;
}student1;
那麼你想給student1的生日里的year賦值的話
student1.birthday.year=1987;
㈡ 類成員的預設訪問許可權是public而結構體中成員的訪問預設訪問許可權為private
正好說反了。結構體中默認public,類中默認private。
㈢ .Net c# 結構體 關於enum 默認訪問許可權問題
因為你聲明的枚舉的訪問修飾符的級別要比類Person的訪問修飾符的級別低。
enum Gender {男,女}
改為:public enum Gender {男,女} 就行啦。
㈣ C++類和結構體有什麼區別
C/C++結構體的區別
C中的結構體和C++中結構體的不同之處:在C中的結構體只能自定義數據類型,結構體中不允許有函數,而C++中的結構體可以加入成員函數。
C++中的結構體和類的異同:
一、相同之處:結構體中可以包含函數;也可以定義public、private、protected數據成員;定義了結構體之後,可以用結構體名來創建對象。但C中的結構體不允許有函數;
也就是說在C++當中,結構體中可以有成員變數,可以有成員函數,可以從別的類繼承,也可以被別的類繼承,可以有虛函數。
二、不同之處:結構體定義中默認情況下的成員是public,而類定義中的默認情況下的成員是private的。類中的非static成員函數有this指針,(而struct中沒有是錯誤的,一直被誤導啊,經過測試struct的成員函數一樣具有this指針),類的關鍵字class能作為template模板的關鍵字 即template<class T> class A{}; 而struct不可以。
實際上,C中的結構體只涉及到數據結構,而不涉及到演算法,也就是說在C中數據結構和演算法是分離的,而到C++中一類或者一個結構體可以包含函數(這個函數在C++我們通常中稱為成員函數),C++中的結構體和類體現了數據結構和演算法的結合。
㈤ class中的成員默認是private,而struct的成員默認為public。
private是私有的。public:是公共的,具體表現在聲明的私有數據成員或者方法只能通過封裝在類中的其它方法訪問,這樣是避免用戶直接通過聲明的類對象修改數據成員,不但如此,被其它類以任何方式(公有繼承,私有繼承,保護繼承)後其在派生類中仍表現為私有!
而公有的數據成員和方法不但能通過方法訪問,也可以用對象直接訪問;被其它類公有繼承後其在派生類中仍表現為公有!
㈥ c++問題,網上都說struct和class最根本的區別就是默認的成員屬性不同,其他的時候可以互換
struct和class都是用於定義用戶自定義類型,兩個關鍵字的作用幾乎是等價的。能不能賦值和拷貝構造得看struct和 class的定義,不能說所有的class和所有的struct都能復制或者不能復制。
struct和class的區別: struct成員默認的訪問控制為public,默認的繼承訪問控制為public,而class的為private.
「對象之間可以相互賦值,而結構體之間不可以」你這句話有問題!
㈦ 結構體,共用體和枚舉類型的基本特點及區別
結構體和數組一樣都是構造型數據類型,和數組不同的是,結構體可以處理不同類型的數據。如下定義一個學生信息的結構體: struct student{ int number; char sex[3]; char name[10]; srtuct birthday birth;//birthday 是結構體類型的數據,這里沒有寫出來 char dep[20];}這個結構體有三種類型的數據,可以看出結構體里還可以有結構體類型、共用體的類型的數據。 共用體是一種多變數共享存儲空間的構造類型,它允許幾種不同的變數共用同一存儲空間。共用體和結構體的區別:1.結構體每一位成員都用來表示一種具體事務的屬性,共用體成員可以表示多種屬性(同一存儲空間可以存儲不同類型的數據)。 2.結構體總空間大小,等於各成員總長度,共用體空間等於最大成員占據的空間。 3.共用體不能賦初值。只要理解了共用體了結構體他們的區別應該能分清楚。 枚舉類型是指變數的值可以全部列出,定義一個枚舉變數後,變數的值確定在定義之中。它和結構體、共用體的區別在於,枚舉元素是常量,只能在定義階段賦值。枚舉是比較特別的類型,有很多的細節,你可以翻閱書本繼續理解。
㈧ c++,結構體保存到文件,和從文件中讀取內容到結構體的過程是怎麼樣的呢
io操作是直接在內存指針按位元組寫入,你讀取了文本內容,相對於存儲了一整條的內存數據,然後你write也是按位元組逐字寫入,從你的結構體第一位開始寫。如果你的格式和結構體格式一致的話,自然不會出問題的!
㈨ C++結構體如何設置默認值
幾天老師講了類類型可以通過構造函數對其成員進行初始化。
在結構體中可以嗎?
可以的。
我想每聲明一個node變數,其中的flag值默認為0,該怎麼辦?
像下面這樣:
#include <iostream.h>
struct node
{
int flag;
node(); // 默認構造函數
};
node::node()
{
flag = 0; // 像這樣
}
int main(int argc, char *argv[])
{
// 測試
node n;
cout << n.flag << endl;
return 0;
}