#include <iostream>

using namespace std;

class Greeting {
    protected:
        string s;
    public:
        Greeting(){
            s = "Hello, ";
        }
        virtual ~Greeting() { }
        virtual void printGreeting() = 0;
};

class GitHubGreeting : public Greeting {
    public: 
        GitHubGreeting() { 
            s += "GitHub!";
            printGreeting();
        }
        GitHubGreeting(GitHubGreeting & h) { }
        GitHubGreeting(GitHubGreeting * h) { }
        virtual ~GitHubGreeting() { }
        void operator=(GitHubGreeting & h) { }
        void printGreeting() { 
            cout << s << endl; 
        }
};

int main() {
    GitHubGreeting h;
    return 0;
}

#include <iostream>

using namespace std;

class Greeting {
    protected:
        string s;
    public:
        Greeting(){
            s = "Hello, ";
        }
        virtual ~Greeting() { }
        virtual void printGreeting() = 0;
};

class GitHubGreeting : public Greeting {
    public: 
        GitHubGreeting() { 
            s += "GitHub!";
            printGreeting();
        }
        GitHubGreeting(GitHubGreeting & h) { GitHubGreeting(); }
        GitHubGreeting(GitHubGreeting * h) { GitHubGreeting(); }
        virtual ~GitHubGreeting() { }
        void operator=(GitHubGreeting & h) { }
        void printGreeting() { 
            cout << s << endl; 
        }
};

int main() {
    GitHubGreeting h;
    return 0;
}

Fix the copy constructors to call the base constructor
Fix the copy constructors to call the base constructor
