1
在C++中我有一個頭文件小時限定一個抽象類(接口)與空 虛析:C++在頭文件空接口析
class I
{
public:
virtual ~I() {}
};
- 問題1:對於目標代碼將在每個包含Ih的.cpp文件的目標文件中生成空的析構函數?
- 問題2:如果問題1的答案是肯定的,這是否會成爲問題(在不同的目標文件中使用相同的方法)?
在C++中我有一個頭文件小時限定一個抽象類(接口)與空 虛析:C++在頭文件空接口析
class I
{
public:
virtual ~I() {}
};
不,它不會。類定義中定義的方法自動爲inline
,所以不需要擔心。
請注意,標記爲inline
且實際上在二進制中內聯的方法是不同的。 inline
只是一個標記(最好是編譯器提示)。尤其是具有virtual
的功能。無論方法是否標記爲inline
,多態性都能保證正常工作。
有沒有辦法在類定義中定義一個方法但不是內聯? – Giorgio
@Giorgio:不,沒有。它必須內聯才能不違反ODR。 –
@Giorgio據我所知,該標準指出,在一個類中定義的方法是內聯的,所以我不這麼認爲。 –