So now struct can have virtual function and support inheritance ? What difference with classes then ? What the true purpose of information hiding?
Possible Duplicate:
What are the differences between struct and class in C++
www.cplusplus.com http:/ / / / / /小时类型的参考信息/ _型
我想我的"教师"没有告诉我很多关于结构和类之间的差异在C + +。
我读一些其他的问题,关于在继承,struct默认是public。我想没有constructors结构/破坏者。
其他的差异是什么?他们物太多?
当我们在保护私人/属性/方法,他们不可以在运行时编译,只因为它是在编译的时间和报告的错误,对吗?然后比较这些特征与类,什么是"信息隐藏"真的给友好的程序员吗?所以当有人在这里是它的重用的类,这一类的人不会因为滥用私人/保值的东西要报告由编译器?
我仍然挣扎在信息隐藏真实的目的,它仍然在我的头,我的声音,它带来了更多的安全,在样点,不安全breaches的意思,但我真的很困惑的问题是设计的目标搜索中的语言……(我不打算在任何C + +),我只明白,在什么情况下这个特征可以是或不是,如果不,这不是一个问题,但我只是想知道……)。
- 您的另一个问题是如何向新的程序员解释松耦合和隐藏的信息的可能副本?抽象、信息隐藏、封装。顺便说一句,请尽量在每个帖子里问一个问题。
- 这听起来像是两个独立的问题。单独问他们(当然,也可以阅读他们重复的问题)
- 第三个难题是:您可以创建类&struct的联合(只要它们没有ctor/dtor,但联合可以有一个ctor)。
远的是编译器之间的差异而言,没有比其他struct和class默认可访问性。他们只是会是两个不同的关键字相关的东西。操作系统中,可以有一个基类的构造函数,destructors,虚拟函数,一切。
在远方的程序员而言,这是普通的会议使用的是与非struct类(这是这些东西,POD)的活性,或去,甚至还和使用的struct仅适用在用户定义的类和成员函数的所有,只有公共数据成员。这个人有时混乱的会议上,因为它是容易被认为是一类surprisingly(当它是不是,但至少他们正在努力。
在C + +,至少,信息隐藏的安全是绝对没有用的。将你的心出来。它不提供任何的安全,除了在一般的方式,任何好的编码实践是使代码更容易了解到那是理智的,和因此使fewer程序员的错误。
信息隐藏的目的是允许你改变实施后,删除或重命名成员可能对私人的,安全的知识,你是没一个用户类的类,和朋友到外面,是一referring到他们。显然,这是有用的,但显然是不可能的,更重要的是它的和有用的,因为它使你的代码中的类所显示的界面是一个客户,你要使用的,这是和你的类的用户可以rightfully期望的工作。你可以实现一个与文件相同的原则,但在实践中这是很好的编译器来执行规则。
这并不是因为任何的"安全"了它的在线编译系统可能工作在公共/私人的保护。如果你的类的用户说,他们再利用一些怪诞的黑客,他们的代码,他们deserve停止工作,当你改变你的compiling /类,如果他们给你,你可以吃到complain嘲笑他们。
- "史蒂夫:好的答案。:)+ 1
- 这些都是非常小的优势。我仍然不明白什么和用is the of when你可以继承从另一个类的对象"安内产卵,恩……面向对象编程是我的噩梦……当about和思维速度的存储队列的足迹还不能真的知道什么茶用的茶,除了开源"真人秀制作友好的"……
- 问:"你不gokoon of about the继承的目的,这是在所有其他问题的目的- from the信息隐藏。我会告诉你停止思考关于速度和多队列内存足迹,虽然。我的电脑有10至100的相角近似的速度和存储usually时报the need,那么我知道我很多afford Return for工作与easier是开源的。在寻常的案例在速度或存储使用is within a因子of 10 of the危险区,这是当你把很多时间思考about it.我的休息时间avoid the of the全不适当的算法和结构。
- 我很抱歉,我不知道你的意思"的模式,你可以从另一个类的对象"菌种安内"。
- 在游戏编程速度is some kind of Vital物……也许我not yet a game at the level of制作与CPU的要求很多,但我想我。……
- 的意思struct struct B {;};对象;这里the inside is,but instead我have done a B:公共struct {};to just inherit from…我可以给你两个,我不能找到任何优势和…
- ironically,多写在高性能游戏重要amount of which is an在Lua代码,面向对象的脚本语言,风格,在interpreter typically安在运行游戏。for the cases(物理demanding寻常的高性能图形引擎,操作他们break into C + +),在GPU的着色器管线或类的东西,我不明白。
- @:对gokoon继承vs. the main嵌入,你想你的目标差分is whether to be of type b其实不管它是否ais that represents,or to have them你只要使用对象/安aof type。如果ais for instance is std::fstream,然后你在bFileStream类特异性(inherit kind of that is),或只是在EN EN EN uses that has for some用FileStream(embed)?
- 我不明白irony the…
- 好的,humorous incongruity。当你担心,overheads of the other programmers C++游戏,是广bashing超时队列amounts of less是高效的运行时间。真的,虽然,the reason is that they do this知道他们能熟练developers焦点时,物位optimising the少比他们的担心,"dispersing about the Whole队列基础上的努力。即使你只在developer should need likewise:最不optimisation队列。
- 我的意思是当你实施"订单队列,你回答问题与解决方案。这是所有的语言是什么。我是bugging is that is,is just a inheriting嵌入与设计或选择的哲学,不是一个设计。also is not子的多态性特征,如果你真的在你的分constantly require to铸造对象。
- @:You should not be jokoon分铸造对象。如果你是,你是做正确的T子的多态性。
- 如何知道?how你not while using铸子的多态性?