You've answered 0 of 116 questions correctly. (Clear)

Question #189 Difficulty: 2

According to the C++17 standard, what is the output of this program?

    #include <iostream>

struct A {
  virtual int fn(int i = 5) const { return i + 1; }

struct B : A {
  virtual int fn(int i = 7) const override { return i + 2; }

void run(const A& a) {
  std::cout << a.fn(1) << a.fn();

int main() {


Can the implementation use the dynamic type of an object when determining the default argument to a function?


Problems? View a hint or try another question.

I give up, show me the answer (make 3 more attempts first).

Mode : Training

You are currently in training mode, answering random questions. Why not Start a new quiz? Then you can boast about your score, and invite your friends.


Create your own!

Android app

Get Sergey Vasilchenko's CppQuiz Android app.