difference between classes and structure
我知道类和结构的主要区别在于类是引用类型,结构是值类型。有人能解释一下值类型和引用类型是什么意思吗?
- 类可以具有构造函数和析构函数,而结构不能。
- 我想你是在读C。
- @forcebru:结构不能有构造函数。stackoverflow.com/questions/1127396/struct-constructor-in-c
- @完全的胡说八道。至少在C++中。
- ChristianHackl,OOP,我比C +更像个C人
- @但是C没有类。所以这仍然是胡说八道。
- @ LightnessRacesinOrbit,我的意思是,我不是C++专家,所以我可能错了,因为我比C++更了解C。当然,我知道C没有课!
- @forcebru:好的:)
(P)你必须考虑一种不同的语言。In C+,class types are seminally the same whether you introduce them with the EDOCX1 original 0 or EDOCX1.它们是目标类型(其中一种可能被称为"价值类型"),在目标与价值代表的感觉中。(p)(P)The only difference is that base classes and members are public by default if you use original EDOCX1,and private if you use original EDOCX1.(p)(P)Reference types are denoted with EDOCX1 penographic 14 universal or EDOCX1 reunifical 15,and can refer to any object or function type,not just classes.(p)
- 我不确定"语义上相同"是否是一个好的表达方式。这两者之间显然存在着"感觉"上的差异。使用class或struct是一个文档,它会立即给您一个强烈的提示,说明您是处理松散的数据集合,还是处理具有规则和不变量的复杂实体。
- @ ChristianHackl:C++定义了语义,而不是你的心。虽然我基本上也遵循这一惯例,但它是主观的,根本不接近被普遍接受。
- @克里斯蒂安哈克:"语义上相同"正是表达它的方式。它们表示相同的程序行为(即它们具有相同的语义),无论您是否在关键字的选择中读取任何额外的含义。
- @轻竞技性脑损伤:当然是主观的,不被普遍接受。这不是重点。重点是,"语义上相同"可能给人错误的印象,即当"大多数开发人员"或"大多数人"(isocpp.org/wiki/faq/classes and objects)明显做出区分时,使用哪个关键字根本不重要。
- @克里斯蒂安哈克:如果你不知道"语义"是什么意思,它只会给你错误的印象。
- @克里斯蒂安哈克:嗯,再一次,这与语义学无关:)
- @米凯西莫尔:嗯,我无意就正确的术语展开真正的争论。我个人只会用"语义"作为"意思"的同义词,比如"[除了可访问性,]它们在技术上是相同的,但在语义上与许多程序员不同"。你认为这样的判决完全错误吗?
- @LightnessRaceSinorbit:嗯,我想我应该重新考虑我(与编程相关)使用"语义"这个词。我明白这很容易让我说出我不想说的话。
- @克里斯蒂安·哈克:如果你无意就正确的术语展开争论,那么从对术语的批评开始你对这个问题的反馈可能不是最明智的做法;)
- @不,不,我的目的是高尚的!(我甚至反对这个答案。)我试图消除一个我认为可能会产生误解并引起术语争论的词:哦,讽刺。事实上,很多很多年前,当我提到"CSS语义"时,我在一个CSS新闻组里发生了一场奇怪的互联网火焰战,所有人都向我扑过来,告诉我"CSS没有语义,只有HTML才有语义"。好吧,我离题了。祝你晚上愉快!
- @克里斯蒂安·哈克:哈哈,听起来不错,你也是。
(P)The only difference between EDOCX1 penal 0 is and EDOCX1 welcx1 is that by default members/bases are EDOCX1 big 2 to a EDOCX1 welcx1/welcx1 welcx1(p)(P)Now values and references are totally orthognal concepts in C++to EDOCX1 universal 0/EDOCX1 commercial 1,basically meaning instance of a EDOCX1 universal 0/EDOCX1 universal 1 and handle-to-instance.(p)
- 你应该提到那些"东西"包括基类。
- @Christianhackl谢谢,编辑了这一变化
(P)In C+,the only differences between a structure and a class is the default member access and default inheritance:(p)字母名称(P)然而,我通常要在这些目标之间作出区分:我使用一个结构来表示,我的目标确实是在没有任何方法(其他事项的解决者和使用者)的情况下收集数据的会员国(那些有公开机会的会员国)。(p)
- 这不是唯一的区别。请参阅其他答案和副本。
- @Juanchopanza感谢您指出这一点。
- @Juanchopanza如果你认为现在更好,你可以撤销你的否决权;)
- 当然,没问题。完成!