gpt4 book ai didi

c++ - 测试此指针的常量指针性质

转载 作者:行者123 更新时间:2023-11-28 04:10:39 25 4
gpt4 key购买 nike

由于 this 指针是非 const 成员函数中的 const 指针(不是指向 const 的指针)(来自 C++ Primer),我试图通过将其他对象的地址分配给 this 来获得错误消息(故意),但它不是 lvalue 所以它给出了另一个错误(我没有我不想)。

如果我尝试将对象分配给取消引用的 this,那么它将只是将一个对象分配给另一个对象。

有什么方法可以测试 thisconst pointer 性质

最佳答案

我想编译器已经给了你正确的错误信息。从标准,[class.this]/1

In the body of a non-static ([class.mfct]) member function, the keyword this is a prvalue whose value is a pointer to the object for which the function is called. The type of this in a member function of a class X is X*. If the member function is declared const, the type of this is const X*,

标准没有说 this 是一个 const 指针;相反,它表示 this 的类型是 X*(或 const 成员函数中的 const X*)。并且 this 是一个无法修改的纯右值,如错误消息所述。

从防止 this 被修改(或获取其地址)的角度来看,将其声明为纯右值就足够了。另一方面,由于 const_cast 的潜在用途,仅将其声明为 const 是不够的。

关于c++ - 测试此指针的常量指针性质,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57881828/

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