You've answered 0 of 178 questions correctly. (Clear)
Question #112 Difficulty:
According to the C++23 standard, what is the output of this program?
#include <iostream>
#include <utility>
struct A
{
A() { std::cout << "1"; }
A(const A&) { std::cout << "2"; }
A(A&&) { std::cout << "3"; }
};
struct B
{
A a;
B() { std::cout << "4"; }
B(const B& b) : a(b.a) { std::cout << "5"; }
B(B&& b) : a(b.a) { std::cout << "6"; }
};
int main()
{
B b1;
B b2 = std::move(b1);
}
Hint:
When members are not mentioned in the member initializer list, when are they initialized?
Note that the expression b.a
, which names a data member of an rvalue reference, is an lvalue here.
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.
Contribute
Android app
Get Sergey Vasilchenko's CppQuiz Android app.
C++ Brain Teasers
Get the book, support the site!