【发布时间】:2021-09-25 12:14:42
【问题描述】:
我遇到了一个带有这个抽象类模板定义的考试题:
template <class MusicPlayer>
class SongAbstract {
protected:
unsigned long unique_id;
public:
SongAbstract() {
static unsigned long counter = 0;
unique_id = (counter++);
}
int play() const { return MusicPlayer::play(this->unique_id); }
void stop() const { MusicPlayer::stop(); }
unsigned long get_id() const { return unique_id; }
protected:
virtual void print_info(ostream& os) const = 0;
};
考试题目如下: “从上面的代码可以看出,需要 MusicPlayer 类的实现。 为一个名为 AndroidMusicPlayer 的类编写一个声明,以便程序运行。”
官方解决方案:
class AndroidMusicPlayer {
public:
static int play(unsigned long id);
static void stop();
};
我无法理解构造函数的作用,如果有人能解释以下内容,我将不胜感激:
- 在构造函数中定义静态数据成员的目的是什么?
- 为什么 AndroidMusicPlayer 中的方法声明为静态?他们访问数据成员 “unique_id”,它不是静态的。
【问题讨论】:
标签: c++ abstract-class static-methods