Loại diễn viên nào diễn ra ở đây (trong B::get()
)?Lớp dẫn xuất từ Cast đến cơ sở
class A {
public:
A() : a(0) {}
int a;
};
class B : public A {
public:
A* get() {
return this; //is this C-style cast?
}
};
int main()
{
B b;
cout << b.get()->a << "\n";
system("pause");
return 0;
}
Tôi đã thấy loại mã này trong API nổi tiếng. Có thực hành tốt hơn để thực hiện static_cast<A*>(this);
không?
Không có tính năng truyền nào cả, chỉ là chuyển đổi tiềm ẩn. Một diễn viên là một chuyển đổi rõ ràng. – molbdnilo