gpt4 book ai didi

c++ - 区别 b/w Objective C 的 self 和 C++ 的 this?

转载 作者:可可西里 更新时间:2023-11-01 15:37:12 25 4
gpt4 key购买 nike

有人能说出 Objective-C 的 self 和 C++ this 指针之间的区别吗?

最佳答案

主要区别是this是一个关键字,而self是一个变量。这样做的结果是,虽然 this 总是 引用正在执行特定方法的对象,但 Objective-C 方法可以自由修改 self在执行期间。这有时被构造函数使用,它在失败时设置 self = nil

这样做的原因是:

  • 这样子类(使用 self = [super init] 链式初始化器)可以看到初始化失败的时间,并且知道不要在自己的初始化器中继续。
  • 组合对象可以看到失败并知道它们没有有效的组件。

一些初始化器会将 self 设置为一个不同但有效的对象。这可以在类集群中使用,其中“抽象”类可以在构建初始化对象时生成一个临时实例,但最终会根据在构建过程中构建的属性返回一个不同的对象。

此外,这意味着你可以用变量名做一些你不能用关键字做的通常的事情,比如在 self 中定义一个更局部的同名变量一个代码块。

关于c++ - 区别 b/w Objective C 的 self 和 C++ 的 this?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3810824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com