我正在尝试了解static_cast
的一些细节。
请查看以下代码,
struct A
{
int data = 0;
};
void foo(const A* a)
{
(*static_cast<A**>(static_cast<void*>(&a)))->data = 1;
}
void bar(const A* a)
{
const_cast<A*>(a)->data = 1;
}
int main()
{
A a;
foo(&a);
return a.data;
}
函数foo
是否有效的C ++代码?
与foo
和bar
相比,是否有任何有效用法能带来不同的结果?