c語(yǔ)言子類怎么調(diào)用父類構(gòu)造函數(shù)

小億
150
2023-11-30 19:22:59

在C語(yǔ)言中,沒(méi)有直接的機(jī)制來(lái)定義類和子類,也沒(méi)有繼承的概念。但是,可以通過(guò)結(jié)構(gòu)體和函數(shù)指針來(lái)模擬類和子類的關(guān)系,并使用函數(shù)指針來(lái)調(diào)用父類的構(gòu)造函數(shù)。

下面是一個(gè)示例代碼:

#include <stdio.h>

// 定義父類結(jié)構(gòu)體
typedef struct {
    int x;
} Parent;

// 父類的構(gòu)造函數(shù)
void parent_constructor(Parent* parent, int x) {
    parent->x = x;
}

// 定義子類結(jié)構(gòu)體
typedef struct {
    Parent parent;  // 子類中包含一個(gè)父類對(duì)象
    int y;
} Child;

// 子類的構(gòu)造函數(shù)
void child_constructor(Child* child, int x, int y) {
    parent_constructor(&(child->parent), x);  // 調(diào)用父類的構(gòu)造函數(shù)
    child->y = y;
}

int main() {
    Child child;
    child_constructor(&child, 10, 20);
    
    printf("x: %d\n", child.parent.x);
    printf("y: %d\n", child.y);
    
    return 0;
}

在這個(gè)示例代碼中,我們通過(guò)定義一個(gè)父類結(jié)構(gòu)體Parent和一個(gè)子類結(jié)構(gòu)體Child來(lái)模擬類和子類的關(guān)系。父類結(jié)構(gòu)體中只包含一個(gè)x成員變量,子類結(jié)構(gòu)體中除了包含父類對(duì)象外,還有一個(gè)y成員變量。

在父類的構(gòu)造函數(shù)parent_constructor中,我們將傳入的參數(shù)x賦值給父類的x成員變量。

在子類的構(gòu)造函數(shù)child_constructor中,我們首先調(diào)用父類的構(gòu)造函數(shù)parent_constructor來(lái)初始化父類對(duì)象,然后將傳入的參數(shù)y賦值給子類的y成員變量。

最后,在main函數(shù)中,我們創(chuàng)建了一個(gè)子類對(duì)象child,并調(diào)用子類的構(gòu)造函數(shù)child_constructor來(lái)初始化它。然后,我們打印出父類對(duì)象的x成員變量和子類對(duì)象的y成員變量的值。

0