问题标签 [this-pointer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 使用 *this 是个好主意吗?
我不确定是否
是我们可以返回调用成员函数的类的实例的唯一方法吗?我问的原因是因为我们的教练告诉我们在必要时避免使用指针,我想知道这是不是唯一必要的方法是返回 this 指针。
我正在使用一个包含私有数据成员分子和分母的分数类。我正在谈论的成员函数用于添加两个分数,例如:
plus 成员函数定义如下:
教练希望我们做 C = A += B ,所以我想这就是原因。
c++ - 在 g++ 中删除此指针行为
在查看程序的输出之后,似乎仍然调用了“dev”函数,尽管在调用 dev 之前在函数 abc 中调用了“delete this”?gcc/g++ 如何处理这个问题?
c++ - 在初始化列表中使用超类的地址/指针
上下文 1:D 类:公共 B1,公共 B2{};
上下文 2:B2 带 B1 初始化: B2( B1 * ) //B2 的构造函数
我的问题在 D 的初始化列表中:
D::D() : B1(), B2( ? )... 应该是什么?
我不想在 ? 地方,因为在初始化列表中使用“this”是不好的。并且由于 B1 部分已经初始化,使用它是有意义的。
我应该怎么办 ?
c# - 使用带有 this 关键字的 ref 参数?
有没有办法强制 this 关键字充当 ref 参数?我想传入一个修改对象多个属性的访问者,但这只是想像一个值参数一样。
对象中的代码:
访客中的代码:
javascript - 创建对象时交叉引用 js-object 变量
概括:
我想知道是否可以做这样的事情:
...通过使用其他指针,例如{a: 'A',b: self.a}
or{a: 'A',b: own.a}
或其他任何东西...
完整问题:
我正在尝试使用 Ext.extend 扩展 MyBaseModule,并且需要交叉引用传递给 Ext.extend() 的扩展对象中的值。
由于我还没有在 MyModule 的上下文中,我无法使用它来引用对象(参见下面第 12 行的示例)。有没有其他方法可以在不首先创建对象的情况下引用这样的值?
或者以下是唯一的解决方案?如果可能的话,我想避免这种情况,因为我发现它对于大型扩展定义的可读性较差。
c# - 在 C# 中使用表单控件时何时使用 THIS 关键字
我距离掌握 C# 还很远,但我内心的孩子正在推动我每天继续改进我的编程。
当我制作一个 WinForms 应用程序时,我想切实地更改和使用许多控件。
我不明白什么时候需要使用this.control
关键字,什么时候应该使用 just control
。
示例:
如果我想更改标签的文本,我可以写
或者
其中哪一个是正确的方法?this
在WinForms中使用控件(如datagrid、text、tables等)时,何时使用关键字有简单的解释吗?
vb.net - 为什么在 VB.NET 中传递“Me”ByRef 是合法的?
刚才我震惊地发现以下是合法的(C#等价物绝对不是):
但对我来说更奇怪的是,它似乎并没有达到我的预期:
上面的输出是“10”,而不是我想象的“0”(当然,这种期望本身就充满了某种恐怖)。所以看起来你可以通过Me
ByRef
,但是编译器会以某种方式覆盖(?)行为,就好像你已经通过了Me
ByVal
。
- 为什么通过是合法的
Me
ByRef
?(是否有一些向后兼容的解释?) - 我是否正确地说这样做的行为被编译器覆盖了?如果没有,我错过了什么?
c++ - 为什么这个指针地址在析构函数(c++)中不是预期的
我对基类析构函数中的 this 指针有一个奇怪的问题。
问题描述:
我有 3 个课程:A1,A2,A3
A2从A1公开继承,从A3私下继承
A3有一个函数getPrimaryInstance() ...返回A1对A2实例的类型引用:
A3构造函数如下所示:
(其中regInst(...)是A1中定义的函数,用于存储指向所有A3实例的指针)
同样的A3析构函数:
^这里是问题发生的地方!
当名为primary的静态A2实例在程序终止时被销毁时,将调用A3析构函数,但在~A3内部,我尝试访问与我正在销毁的实例相同的函数。 =>运行时访问冲突!
所以我认为可以用一个简单的 if 语句来修复,如下所示:
(双重演员的原因是继承:)
A1 A3
。\ /
. A2
(但这并不重要,可能只是(int) -casted 或其他)
更重要的是它仍然崩溃。使用调试器单步执行代码会发现,当我的A2 主实例被破坏时,析构函数中的this指针和我通过调用getPrimaryInstance()获得的地址由于某种原因根本不匹配!我不明白为什么this指针指向的地址总是不同于它(据我所知)应该是的地址。:(
在析构函数中这样做:
还向我展示了差异不是恒定的(我曾短暂地认为存在一些恒定偏移),所以当它应该是同一个时,它就像是两个完全不同的对象。:(
我正在使用 VC++ Express (2008) 进行编码。在谷歌搜索了一下之后,我发现了以下 MS 文章:
修复:“this”指针在基类的析构函数中不正确
这与我遇到的问题不同(据说它在 C++.Net 2003 中也已修复)。但不管这些症状看起来很相似,而且它们确实提供了一个简单的解决方法,所以我决定尝试一下:
删除了 not-working- if -statement 并在A2的第二个继承之前添加了virtual,如下所示:
它奏效了!this指针看起来仍然是错误的,但不再给出访问冲突。
所以我最大的问题是为什么?
为什么this指针不指向它应该指向的位置(?)?
为什么像上面那样向继承添加virtual可以解决它(尽管它仍然指向&getPrimaryInstance()以外的其他地方)?
这是一个错误吗?有人可以在非 MS 环境中尝试吗?
最重要的是:这安全吗?当然它不再抱怨了,但我仍然担心它没有做它应该做的事情。:S
如果有人对此有知识或经验并且可以帮助我理解它,我将非常感激,因为我仍在学习 C++,这完全超出了我目前的知识范围。
c++ - 你能解释一下this指针的概念吗?
我需要了解this
指针的概念,最好举个例子。
我是 C++ 新手,所以请使用简单的语言,以便我更好地理解它。
c++ - 可以使用 this 指针吗?
在使用指向类的指针时,我喜欢this->
在类中的变量前面添加一个,以更清楚地表明我正在谈论的变量是在当前类中,而不是临时变量等。所以我的行将是就像是
代替
添加多余的 是否可以this
,或者会降低代码的可读性?