C结构中的函数定义?

时间:2015-03-18 13:21:12

标签: c struct constructor

我有一个我需要了解的C代码。有一个

typedef struct someStruct {
    int i; 
    char c; 
    someStruct() {
        i = 0;
        c = 'c';
    }
    someStruct(char inpChar) {
        i = 1;
        c = inpChar;
    }
} t_someStruct;

(我知道,代码并没有真正意义或服务于目的。我只是简化了它。) 所以有这个结构,它有两个成员(int i和char c)。有趣的是它基本上有两个构造函数,这对我来说是一个新概念。 它工作正常,但我们可以编写结构的构造函数吗?我在谷歌上找不到任何东西,也许我的搜索不对。

3 个答案:

答案 0 :(得分:7)

您的代码不是有效的C代码(即有效的C11)代码,但它是有效的C ++(即C++14)代码。

在C ++中,structclass类似,只是所有成员都默认为public;见例如here

答案 1 :(得分:3)

C中没有构造函数。

这段代码很可能是在C ++中。 在C ++中,struct实际上类似于class,因此可以为C ++中的结构定义构造函数。

尝试在gcc中编译代码。你会得到一个

error: expected specifier-qualifier-list before ‘someStruct’

答案 2 :(得分:0)

C和C ++之间的主要区别在于C ++支持类,但C不支持。在C ++中,struct是一个特殊的类,因此上面的代码可以在C ++中使用,但不能在C中使用。