Pet*_*ter 1 c++ class c++builder
Class A
{
public:
A *GetA(void) { return a; }
protected:
A *a;
};
Class B : public A
{
public:
B *GetB(void) { return (B*)a; }
};
Run Code Online (Sandbox Code Playgroud)
在AI类中,假设编译器(理想情况下)将优化并将getter内联到与直接访问变量无关的代码?
在B类中,变量被转换为B.这纯粹是为了编译器还是这也涉及到代码?对于B中的功能,汇编指令是否相同?
大多数强制转换都不会插入任何汇编程序指令,但也有例外情况:
扩展有符号整数的强制转换:强制转换插入符号扩展指令以保留负值的值.
与浮点类型进行转换:这些转换执行完全转换,它们不会重新解释这些位.因此,计算机必须做一些事情.
指针具有多重继承.虽然第一个基础始终是对象中的第一个成员,但第二个基础不能.因此,将a转换Derived*为a SecondBase*将调整指针,向代码添加一条加法指令.
| 归档时间: |
|
| 查看次数: |
693 次 |
| 最近记录: |