沒有拋出異常...... Finding the type of an object in C++ ...我寫了這個代碼: static TVALUE getUpperBound()
{
SomeStruct<TVALUE>* t;
try
{
dynamic_cast<SomeStruct<bool>*> (t);
該類是多態的。 爲什麼兩個打印輸出相同? class A
{
public:
virtual void P(){ cout << "A" << endl; }
};
class B : public A
{
public:
void P()override{
cout << "B" << endl;
}
B(){ cout << "
這裏是一個顯然是行不通的,因爲向下轉換「這個」在構造函數中是非法的代碼: #include <cassert>
class A {
protected:
virtual ~A() {}
public:
A();
};
class B : public A {
};
A::A() {
assert(dynamic_cast<B*>(this))
比方說,我有一個情況如下: 類X有S類型的字段s。 S由兩個類A和B都實施一些相同的方法/我們都知道然後應在S實現,但不幸的是,這種情況並非如此領域擴展。 現在我想要做這樣的事情: "A or B" downcast_field;
if(s instanceof A)
downcast_field = (A)s;
else if (s instanceof B)
downc