Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <sstream>
- std::stringstream ss;
- class A {
- public:
- void foo() {
- ss << "A::foo";
- }
- virtual void bar() {
- ss << "A::bar";
- }
- };
- class B : public A {
- public:
- void foo() {
- ss << "B::foo";
- }
- virtual void bar() {
- ss << "B::bar";
- }
- };
- void foo(A a) {
- ss << "foo::a.foo = ";
- a.foo();
- ss << std::endl;
- ss << "foo::a.bar = ";
- a.bar();
- ss << std::endl;
- }
- void bar(B b) {
- ss << "bar::b.foo = ";
- b.foo();
- ss << std::endl;
- ss << "bar::b.bar = ";
- b.bar();
- ss << std::endl;
- }
- void baz(A &a) {
- ss << "baz::a.foo = ";
- a.foo();
- ss << std::endl;
- ss << "baz::a.bar = ";
- a.bar();
- ss << std::endl;
- }
- void creative_function_name(A *a) {
- ss << "creative_function_name::a->foo = ";
- a->foo();
- ss << std::endl;
- ss << "creative_function_name::a->bar = ";
- a->bar();
- ss << std::endl;
- }
- void set_value1(int target, int new_value) {
- target = new_value;
- }
- void set_value2(int &target, int new_value) {
- target = new_value;
- }
- void set_value3(int *target, int new_value) {
- *target = new_value;
- }
- int main() {
- int x, y, z;
- x = y = z = 0;
- set_value1(x, 1);
- set_value2(y, 2);
- set_value3(&z, 3);
- ss << "x = " << x << std::endl;
- ss << "y = " << y << std::endl;
- ss << "z = " << z << std::endl;
- A a1 = A();
- B b1 = B();
- A a2 = b1;
- A &a3 = b1;
- A *a4 = &a2;
- ss << "a1.foo = ";
- a1.foo();
- ss << std::endl;
- ss << "a1.bar = ";
- a1.bar();
- ss << std::endl;
- ss << "b1.foo = ";
- b1.foo();
- ss << std::endl;
- ss << "b1.bar = ";
- b1.bar();
- ss << std::endl;
- ss << "a2.foo = ";
- a2.foo();
- ss << std::endl;
- ss << "a2.bar = ";
- a2.bar();
- ss << std::endl;
- ss << "a3.foo = ";
- a3.foo();
- ss << std::endl;
- ss << "a3.bar = ";
- a3.bar();
- ss << std::endl;
- ss << "a4.foo = ";
- a4->foo();
- ss << std::endl;
- ss << "a4.bar = ";
- a4->bar();
- ss << std::endl;
- foo(b1);
- bar(b1);
- baz(b1);
- creative_function_name(&b1);
- std::stringstream in;
- while(true) {
- char c = (char)std::cin.get();
- if(std::cin.eof())
- break;
- in << c;
- }
- std::cout << (in.str() == ss.str() ? "Correct!" : "Fail") << std::endl;
- return 0;
- }
Add Comment
Please, Sign In to add comment