Files
  • main.cpp
main.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include <iostream>

class Window {
public:
	Window() = default;
	virtual void display() const {
		std::cout << "window"<< std::endl;
	} // draw window and contents
};
class WindowWithScrollBars : public Window {
public:
	WindowWithScrollBars() = default;
	virtual void display() const {
		std::cout << "windowWithScrollBars" << std::endl;
	}
};

void printNameAndDisplay(Window w) // incorrect! parameter
{								   // may be sliced!
	w.display();
}
void printNameAndDisplayAsRef(const Window& w) // fine, parameter won’t
{ // be sliced
  w.display();
}
int main() {
	WindowWithScrollBars wwsb;
	printNameAndDisplay(wwsb);
	printNameAndDisplayAsRef(wwsb);
}
gcc version 4.6.3