C结构中的函数定义?
Function definition in C struct?
我有一段 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)。有趣的是它基本上有两个构造函数,这对我来说是一个新概念。
它可以正常工作,但是我们可以为结构编写构造函数吗?我在 Google 上找不到任何东西,可能是我搜索不对。
您的代码不是有效的 C 代码(即有效 C11) code but it is valid C++ (i.e. C++14)代码。
在 C++ 中,struct
类似于 class
,只是所有成员默认都是 public
;参见例如here.
C 中没有构造函数。
此代码很可能是用 C++ 编写的。
在 C++ 中,struct
实际上类似于 class
,因此您 可以 为 C++ 中的结构定义构造函数。
尝试在 gcc 中编译您的代码。你会得到一个
error: expected specifier-qualifier-list before ‘someStruct’
C 和 C++ 的主要区别在于 C++ 支持 class 而 C 不支持。在 C++ 中,struct 是一个特殊的 class,所以上面的代码可以在 C++ 中运行,但不能在 C 中运行。
我有一段 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)。有趣的是它基本上有两个构造函数,这对我来说是一个新概念。 它可以正常工作,但是我们可以为结构编写构造函数吗?我在 Google 上找不到任何东西,可能是我搜索不对。
您的代码不是有效的 C 代码(即有效 C11) code but it is valid C++ (i.e. C++14)代码。
在 C++ 中,struct
类似于 class
,只是所有成员默认都是 public
;参见例如here.
C 中没有构造函数。
此代码很可能是用 C++ 编写的。
在 C++ 中,struct
实际上类似于 class
,因此您 可以 为 C++ 中的结构定义构造函数。
尝试在 gcc 中编译您的代码。你会得到一个
error: expected specifier-qualifier-list before ‘someStruct’
C 和 C++ 的主要区别在于 C++ 支持 class 而 C 不支持。在 C++ 中,struct 是一个特殊的 class,所以上面的代码可以在 C++ 中运行,但不能在 C 中运行。