我有一堆以不同方式實現相同靜態內聯方法的類(我從未實例化過)。我想了解這些課程是否可以有共同的家長。 目的不在於虛擬調用,而是爲了強制任何想要以不同方式再次實現該方法的新類的結構。我可以這樣做嗎?我開始認爲這不是C++提供的一種功能。具有靜態(內聯)方法的從未實例化的類的基類
class XXX {
public:
///Should force any derived class to implement
///bool compute(const unsigned char i1, const unsigned char i2);
};
class GreaterThan : public XXX {
public:
static inline bool compute(const unsigned char i1, const unsigned char i2) {
return i1 > i2;
}
};
class NotGreaterThan : public XXX {
public:
static inline bool compute(const unsigned char i1, const unsigned char i2) {
return i1 <= i2;
}
};
class NotLessThan : public XXX { ///This should not compile
public:
static inline bool compute2(const unsigned char i1, const unsigned char i2) {
return i1 >= i2;
}
};
[...]
在基類定義的純虛方法compute
不允許我定義在派生類的靜態方法。當方法不是靜態的時候會迫使我實例化類,當我將它用作函數時,並且基本上會防止內聯。
注意:有人問過類似的問題here。
編輯:可能,也這不應該編譯:
class LessThan : public XXX { ///Also this should not compile
public:
static inline bool compute(const float i1, const float i2) {
return i1 < i2;
}
};
好東西!但我想知道這是否有機會進行內聯...我會說不...... – Antonio
爲了測試內聯,我認爲輸入值(在本例中爲'A'和'B')在編譯時不應該知道時間。 – Antonio
@Antonio它是內聯的! –