一起來了解一下C++的結(jié)構(gòu)體?struct
struct 結(jié)構(gòu)體
占用空間
在C++ 中空結(jié)構(gòu)體占1個字節(jié)
struct Temp{};sizeof(Temp); // 1struct Temp{};
sizeof(Temp); // 1
1.字節(jié)對齊規(guī)則(為了便于cpu尋址) 元素的首地址必須是當前元素所占空間的整數(shù)倍
2.結(jié)構(gòu)體的總長度必須是最大元素所占空間的整數(shù)倍
struct Stu{
int age;
char sex;
}
sizeof(Stu); // 8 最后補三個字節(jié)滿足規(guī)則2
struct Stu2{
char sex;
int age;
}
sizeof(Stu2); // 8 char后面補三個字節(jié)滿足規(guī)則1
與類的區(qū)別
訪問控制權(quán)限
結(jié)構(gòu)體在C++ 中的默認訪問控制權(quán)限都是***public***的,而class的默認是***private***的
主要用途
結(jié)構(gòu)體主要是作為數(shù)據(jù)的集合
而類是對象,是屬性和方法的集合
c結(jié)構(gòu)體實現(xiàn)虛函數(shù)的功能
#include <stdio.h>
typedef int(*fun)(void);
int getParentSex()
{
return 1;
}
int getSonSex()
{
return 2;
}
struct Parent
{
fun getSex;
};
struct Son
{
fun getSex;
};
int main()
{
// 通過函數(shù)指針的賦值達到虛函數(shù)的作用
struct Parent parent;
parent.getSex = getParentSex;
struct Son son;
son.getSex = getSonSex;
printf("Parent sex is %d \nson sex is %d\n", parent.getSex(), son.getSex());
getchar();
}
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
使用C語言構(gòu)建基本的二叉樹數(shù)據(jù)結(jié)構(gòu)
這篇文章主要介紹了使用C語言使用C語言構(gòu)建基本的二叉樹數(shù)據(jù)結(jié)構(gòu),包括根據(jù)前序序列和中序序列構(gòu)建二叉樹的方法,需要的朋友可以參考下2015-08-08
C++使用printf語句實現(xiàn)進制轉(zhuǎn)換的示例代碼
在C語言中,printf 函數(shù)可以直接實現(xiàn)部分進制轉(zhuǎn)換功能,通過格式說明符(format specifier)快速輸出不同進制的數(shù)值,下面給大家分享C++使用printf語句實現(xiàn)進制轉(zhuǎn)換的示例代碼,感興趣的朋友一起看看吧2025-04-04
可能是全網(wǎng)最詳細的Qt連接MySQL數(shù)據(jù)庫教程
QT眾所周知是一個開源的,以C++為底層的可視化工具庫,下面這篇文章主要給大家介紹了關(guān)于最詳細的Qt連接MySQL數(shù)據(jù)庫教程的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2023-04-04

