C 中如何判斷物件是否屬於某個類

2021-06-25 14:47:34 字數 3621 閱讀 8239

1樓:

c++語言判斷一個物件有兩種機制

在執行時判斷,使用if else

int i ;

if( typeid( i ) == typeid( int ) )cout << "i is int" << endl ;

else

cout << "i is not int" << endl ;

在編譯時判斷,使用過載或者特化

template< class t >

void func( t t )

template< >

void func( int i)

int i ;

func( i )

希望對你有用。

2樓:匿名使用者

你仔細看看這個程式rtti(執行時類資訊機制)#include

#include

#include

using namespace std;

class a

};class b : public a {};

void foo (a* pa)

int main (void)

3樓:匿名使用者

判斷 x 的動態型別是不是y,可以用表示式:typeid(x) == typeid(y)

這個要包含:標頭檔案

另外vc可能需要你開啟rtti之後才能用。

c++物件導向程式設計中怎麼判斷一個物件的類型別

4樓:匿名使用者

通過typeid可以獲得物件的型別名稱,然後可以配合if else邏輯建立相應物件型別的物件

#include

#include

using namespace std;

int main()

c++如何判斷兩個物件是否是同一個物件?判斷兩個物件的地址可以嗎?

5樓:

地址相同自然是同一個物件了

自定義類你可以過載operator ==啊

6樓:倒黴熊

不明白,你這裡說的相同是指相等呢

7樓:匿名使用者

可以用auto_ptr儲存一個物件,則這個物件是唯一的,就不用判斷了。

c++中如何判斷一個物件是否屬於某個類?

8樓:雨厚天勤

解決**如下:

c++ 中62616964757a686964616fe58685e5aeb931333365646334

base * p=new a();

base* is = dynamic_cast(p);

return is ? true : false;

類宣告如下:  class father;    class child : public father;    然後在某處這樣寫:

 father *apinstance[2];//a是array的縮寫,p是pointer的縮寫,變數名叫instance。

在c++語言當中,如何判斷一個物件為空?

9樓:馮老師(必果學院

copyc++語言中,物件沒有空和不空的概念,只有物件指標才有空和不空的概念

判斷物件指標是否為空只需要和null常量進行比較即可如果相等,則為空,否則不為空

另外物件雖然沒有空和不空的概念,但是有有效和無效的概念當物件的解構函式被呼叫之後,物件即成為一個無效物件一般可以用控制代碼法來判斷

當物件被構造的時候,在一個全域性的對映表中註冊該物件,獲得一個唯一控制代碼判斷的時候,用物件的控制代碼資訊直接在對映表中進行查詢,如果存在,則有效;如果不存在則無效

析構物件的時候,同時從對映表中刪除該物件的控制代碼資訊

10樓:鍵盤未找到

c++裡使用指標判斷:

person * p = new person();

if( 0 == p )

//...

c++中怎麼判斷兩個物件是否相同

11樓:it孤鶩

singleclass c1 = singleclass::getsingleclass();

他會呼叫預設拷貝函式,那麼這時候的物件和傳過來的物件,雖然內容相同,但是有各自的記憶體空間

singleclass& c1 = singleclass::getsingleclass();

& 是引用 c1直接指向傳過來的物件,相當該物件的別名,共用所以資源

所以singleclass& c1 = singleclass::getsingleclass();

singleclass& c2 = singleclass::getsingleclass();

可以比較 c1==c2 是對的

12樓:

加引用就是說不用開闢新的記憶體,和之前的物件一起使用同一塊記憶體

13樓:匿名使用者

物件是否相同?是同一個型別還是這兩個物件在記憶體中是同一個地址

14樓:匿名使用者

需要寫一個函式實現(或者該物件已經內建函式實現這一功能)

15樓:匿名使用者

笨點的辦法就寫個比較函式吧

16樓:匿名使用者

怎麼才相等,只有你自己知道。。。

17樓:溪貝0號

假如一個物件叫c1, 一個物件叫c2,

這個類裡面有個變數叫 int m_age,

假設:若是c1的 m_age 等於 c2的m_age, 則 c1 和 c2物件相等

可以在類裡面寫一個成員函式

bool xiangdeng(& c) //只需要傳一個物件即可

在main函式呼叫的時候, 用c1.成員函式(c2)形式呼叫,得出一個bool值

bool ret=c1.xiangdeng(c2);

if (ret)

cout<<"兩個物件相等"<

else

cout<<"兩個物件不等"<

重點:這種方法是成員函式判斷法, 只需要傳一個物件, 用 c1.成員函式(c2)的形式呼叫。

c++ 如何判斷一個類a的兩個物件a1和a2是否同一物件

18樓:匿名使用者

通過地址判斷

a* p = &a1;

a* q= &a2;

if(p == q)

19樓:year醫海無邊

分情況如果是定義的時候 使用=操作

比如class a

a a=b;

呼叫的是拷貝構造

除此外,

a=b都是呼叫賦值過載。

20樓:謝興橋

過載一個==邏輯運算子,直接if(a1==a2)就可以了。思路這樣

21樓:匿名使用者

這個問題就有問題 都是兩個物件怎能還能是一個物件啊

如何判斷String中是否包含某個字元

兩種方式 string.vauleof 括號內寫上你要找的字元,返回 1就沒有 abc contains a string 字串常量 stringbuffer 字元創變數 stringbuilder 字元創變數 1.三者在執行速度方面的比較 stringbuilder stringbuffer st...

如何在c和c 中判斷變數是否為空

風若遠去何人留 c c 中,任何一個變數在定義後即擁有自身的記憶體空間,而記憶體空間中是一定有值的,所以不存在絕對意義上的空值。一般來說,判斷空值都是判斷定以後,是否被賦值過,所以只需要判斷變數值是否還是初始值即可。區分變數型別,有一些常用的初始化情況 1 指標型別。指標型別一般被初始化為null,...

C中如何將String類物件裡的字串完整賦值給

string s dsafjsakfas int ilen s.length 得到字串的長度char s1 new char ilen 1 for int i 0 i可以像字元陣列一樣直接訪問下標為i 的字元 知道這點你應該就知道怎樣做了.si i 0 大致就這樣,自己寫的,沒有複製貼上 inclu...