可能的重复:
C++中指针变量和引用变量有什么区别?
这让我很困惑:
class CDummy
{
public:
int isitme (CDummy& param);
};
int CDummy::isitme (CDummy& param)
{
if (¶m == this)
{
return true; //ampersand sign on left side??
}
else
{
return false;
}
}
int main ()
{
CDummy a;
CDummy* b = &a;
if ( b->isitme(a) )
{
cout << "yes, &a is b";
}
return 0;
}
在C语言中&通常表示VAR的地址。这里是什么意思?这是指针符号的一种别致方式吗?
我之所以假设它是一个指针符号,是因为这毕竟是一个指针,我们正在检查两个指针是否相等。
我在cplusplus.com上学习,他们有这个例子。
首先,请注意
this
是指向其所在类的特殊指针(==内存地址)。首先,实例化一个对象:
CDummy a;
接下来,实例化一个指针:
CDummy *b;
接下来,将A
的内存地址分配给指针B
:
b = &a;
接下来,调用CDummy::isitme(CDummy¶m)
方法:
b->isitme(a);
在此方法中对测试进行评估:
if (¶m == this) // do something
棘手的是。param是CDummy类型的对象,但¶m
是param的内存地址。因此param的内存地址将与另一个名为“this
”的内存地址进行测试。如果将调用此方法的对象的内存地址复制到此方法的参数中,这将导致true
。
这种评估通常是在重载复制构造函数时进行的
MyClass& MyClass::operator=(const MyClass &other) {
// if a programmer tries to copy the same object into itself, protect
// from this behavior via this route
if (&other == this) return *this;
else {
// otherwise truly copy other into this
}
}
还要注意*this
的用法,其中this
被取消引用。也就是说,不是返回内存地址,而是返回位于该内存地址的对象。
显然,constexpr std::string尚未添加到GCC的libstdc中(从GCC v11.2开始)。 此代码: 不编译: 我的问题是,当一个字符串包含超过16s(因为GCC的SSO缓冲区大小是16)时,这些字符串将如何在引擎盖下工作?有人能给我简单解释一下吗?一个简单的构造函数会在堆栈上创建字符串对象而不使用动态分配吗? 此代码: 打印这个: 现在通过在这里使用(显然不使用GCC v1
当我将inplace属性的值更改为False时,索引"a"中的元素未删除,但当我更改inplace=True value at index"a"时删除。我不明白它是如何工作的。
我编写了以下代码,但无法理解为什么它不能像在main()线程中那样打印出threadFunc()中的所有no(即0到-99)。 程序的输出为:
我是JavaScript的新手,我认为对象是通过引用传递的。 我期望的输出是: 获得的输出: 当引用的地址时,为什么仍然 null null
我正在为多个移动平台开发替代方案,并找到了代号为One,它使用Java作为通用语言,而不是HTML/CSS/JS或脚本语言。