[英]Assigning a non-pointer to a pointer? (Subclassing a pointer type in C++?)
最近,我遇到了一些看起來像這樣的代碼:
Foo<SomeType> member;
...
void SomeFunc(Bar* bar);
...
SomeFunc(member);
而且我感到非常困惑。 有人可以解釋這里到底發生了什么嗎?
member
如何成為有效的Bar*
?
Foo<SomeType>
是否以某種方式子類化了指針類型?
這是模板的某些屬性嗎? 如果member
是Foo
而不是Foo<SomeType>
是否還有可能?
會員如何成為有效的律師*?
一種可能性是Foo<SomeType>
可轉換為Bar*
。 這可以通過在Foo<SomeType>
中使用用戶定義的轉換運算符來實現。 但是我不認為這種操作返回的Bar
指針有任何意義。 也許,如果Foo<SomeType>
繼承了Bar
並且轉換操作符返回this
它,則它可能會做一些有意義的事情,但這將是多余且令人困惑的。
Foo是否以某種方式繼承了指針類型?
不可以。您不能繼承基本類型。 指針是基本類型。
這是模板的某些屬性嗎?
沒有。
如果member是
Foo
而不是Foo<SomeType>
是否還有可能?
不能。類模板的實例是類。 Foo<SomeType>
是一個類。 不是Foo
。 變量不能以模板作為類型。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.