作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Class A
{
public:
A *GetA(void) { return a; }
protected:
A *a;
};
Class B : public A
{
public:
B *GetB(void) { return (B*)a; }
};
在 A 类中,我假设编译器(理想情况下)将优化 getter 并将其内联到与直接访问变量没有区别的代码中?
在 B 类中,变量被强制转换为 B。这纯粹是为了编译器还是这也涉及代码?B 中的函数的汇编指令是否相同?
最佳答案
大多数转换不插入任何汇编指令,但是也有异常(exception):
对有符号整数进行扩展转换:转换插入符号扩展指令以保留负值的值。
与浮点类型之间的转换:这些转换执行完全转换,它们不会重新解释位。因此,计算机必须做一些事情。
具有多重继承的指针转换。虽然第一个基数始终是对象中的第一个成员,但第二个基数不能。因此,将 Derived*
转换为 SecondBase*
将调整指针,向代码添加加法指令。
关于c++ - C 样式转换是否添加程序集(代码)或仅供编译器了解情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26858683/
我只想知道如何使文件只对特定组可执行。 我有一个具有此权限的文件 /bin/ping rwxr-xr-x root root 34248 oct 14 2010 /bin/ping 例如,如何使它只对
我在 mysql 中有一个正则表达式,想反转它。但不想使用 NOT REGEXP。否定回顾 (?![something]) 在 mysql 中不起作用。确切地说,我想仅使用 REGEXP 查找不为 -
我有一个应用程序,我们正在使用它来为另一个应用程序提供 API 调用。然而它感觉很重,因为它仍在使用整个 rails ,但我们不使用 View 等... 其他人是如何解决这个问题的,只是删除文件?我所
我是一名优秀的程序员,十分优秀!