← Back to archive

Stdle #118 · virtual · 2026-10-02

What does this C++ snippet output?

A past puzzle — fully playable. 4 attempts, hints on wrong guesses.

#include <iostream>
#include <vector>
struct Logger { virtual void log() { std::cout << "base\n"; } };
struct FileLogger : Logger { void log() override { std::cout << "file\n"; } };
int main() {
std::vector<Logger*> v = { new Logger(), new FileLogger() };
for (auto l : v) l->log();
for (auto l : v) delete l;
}
Virtual
2 lines
4 attempts left

Answer & explanation