C++ struct可以有成员函数吗?

Sam*_*Sam 40 c++ struct class member-functions

我对结构和类之间的区别感到非常困惑,因为我似乎看到它们用于几乎相同的东西.我搜索了差异,我看到的唯一答案是默认情况下结构体有公共成员,默认情况下类有私有成员.但是,我的讲师刚刚告诉我结构不能包含成员函数.但我在互联网上看到很多线程,其中人们在结构中包含成员函数,并且具体说这样做是可以的.

我的讲师似乎坚持认为结构定义不具备功能,所以发生了什么?我唯一能想到的是,编译器可能会将结构中的函数更改为其他内容,以便它们在技术上不包含函数......这些矛盾是否有明确的答案?

Bri*_*ian 40

我搜索了差异,我看到的唯一答案是默认情况下结构体有公共成员,默认情况下类有私有成员.

是的,这是正确的.此外,默认情况下,结构的基础是公开继承的,而类的基数默认是私有地继承的.

将函数声明为结构的成员与将函数声明为类的成员具有完全相同的语义,除了您注意到的差异.在每种情况下,它们都被称为成员函数.

  • 这是正确的答案.类和结构之间的*ONLY*不同是默认可见性. (5认同)

mea*_*gar 6

你的讲师显然是错的,假设他们实际上是在谈论C++,而不是C.

在代码中向自己证明这一点很简单,或者选择C++编程语言并查找结构.


Pat*_*ins 5

C++绝对structs可以有成员函数。另一方面,C 结构是一个非常不同的野兽——它们本质上是为某些索引提供名称和类型信息的数组。