c++ - 这个后面的地址是否保证与对象的变量相同
问题描述
如果出现以下代码:
#include<iostream>
class Sample
{
public:
Sample* getSelf()
{
return this;
}
};
int main()
{
Sample s;
if(reinterpret_cast<void*>(&s) == reinterpret_cast<void*>(s.getSelf()))
std::cout << "Same address" << std::endl;
return 0;
}
if 语句中的条件是否保证为真?
我进行了强制转换void*
以确保比较原始地址,以防在比较特定指针类型时出现一些怪癖。
解决方案
是的,您的if
陈述保证是true
。insidethis
是getSelf()
指向实例的指针。
&s
inmain
也是指向该实例的指针。
正如您所怀疑的那样,演员阵容是不必要的。
推荐阅读
- ios - 将分页 UICollectionView 高度调整为当前可见的 UICollectionViewCell
- php - 无法通过使用 PHP 调用类中的函数连接到数据库
- git - git pull 之后在 master 之前的本地分支
- r - 在 dplyr 1.0 中从 mutate_all 移动到 cross()
- python - 如何使用 Selenium 和 Python 从 HTML 中提取文本
- python - 有没有办法在 DataFrame 中将行设置为列行?或如何通过将任何索引行设置为 column_row 从 Excel 文件中获取 DataFrame?
- javascript - 动态添加日期作为带有名称和 ID 的列标题
- php - 验证 Firebase ID 令牌与获取用户数据
- spring-cloud - 带有 Spring Boot 2.3.0 的 Hoxton.SR6 导致奇怪的内容类型问题
- ajax - 未添加 Access-Control-Allow-Headers 标头以响应 cors 非简单请求?