![]() |
1
4
我第一次写这篇文章是作为一个评论,但它占用了相当多的角色,并变成了一个有点aswer。
这并不是说它有什么问题,它只是没有任何实际用途,除了允许您编写在单个函数中保存的简单示例代码(您的引用似乎是这样做的)。 除了各种其他东西外,还使用对象来编写清晰、可重用的代码。如果在使用对象类型的代码中定义该对象类型,则意味着您不打算使用该类型,因为其他文件或模块(或仅命名空间/作用域)将无法访问该定义。 唯一的方法是在声明/定义类时声明类类型的一些全局变量。。你可能已经知道了,像这样的全局变量可能是一个反模式。 结构有点不同,因为它们通常被视为“普通的旧数据对象”,尽管它们与c++中的类几乎相同。这意味着它们不太用于代码重用,也不总是需要公开。
例如,有人可以在一个函数中创建一个匿名结构,用一种比拥有十几个分离变量更干净的方式保存彼此相关的数据。然后就可以使用你的语法了。但在类中这样做意味着必须添加
总而言之:
不是说做不到,但这几乎违背了
即使有了结构,也不会经常出现在结构定义之外的情况,但是在给出代码示例时,它允许一个人展示他所需要的一切,而不必在他的书中花费整个应用程序文件结构的开销,这很好,可能也是你看到这一点的原因。 |
|
2
2
让我们把答案分成两部分: 语法:
上面的样式有问题:
这些是一些问题,我可以看到目前,与您提到的风格。 底线: 依我看,这是一种不好的风格。因为它将禁止您实现多态性。 您可能已经看到了这种语法,主要是“C”代码,用于嵌入式程序和低级驱动器代码(用于8051、msp430等)。他们主要使用它,因为他们完全知道该变量使用的实例数量,而代码主要是while循环。 |
![]() |
3
-1
没有什么能阻止你这么做。从技术上讲,结构和类几乎是一样的,除了它们的成员的默认可见性(对于结构是公共的,对于类是私有的)之外。 然而,虽然struct最常用于普通的旧数据结构,但类最常用于封装状态和行为,通常是以多态的方式。这仅仅是人们自然做出的选择,因为C语言存在于C语言中,用作POD,而类在C++中引入,同时继承和成员函数。这种区别可能是结构经常立即声明和实例化的原因之一,而类的声明是单独导出的。 |
![]() |
cobb208 · Malloc正在为释放指针引发错误 2 年前 |
![]() |
kernel · 打印结构数组内容时出错 2 年前 |
![]() |
mwitz · 在Rust中无法正确写入结构的函数属性 2 年前 |
![]() |
Ulysses · 无法访问结构字段(Rust) 2 年前 |
![]() |
Tor · 使用Box<None>值初始化struct 2 年前 |
![]() |
Yestin · Golang如何初始化数组结构[duplicate] 2 年前 |