before.cxx
#include <iostream>
class OS {
public:
const char *getName(void) {
return "Microsoft Windows";
}
const char *getVersion(void) {
return "6.1.7601";
}
};
OS os;
void displayCurrentOSName(void) {
std::cout << "current OS name: " << os.getName() << std::endl;
}
void displayCurrentOSVersion(void) {
std::cout << "current OS version: " << os.getVersion() << std::endl;
}
int main(void) {
displayCurrentOSName();
displayCurrentOSVersion();
return 0;
}
after.cxx
#include <iostream>
class OS {
public:
static OS &getInstance(void) {
if (!instance) {
instance = new OS();
}
return *instance;
}
const char *getName(void) {
return "Microsoft Windows";
}
const char *getVersion(void) {
return "6.1.7601";
}
private:
OS(void) {}
static OS *instance;
};
OS *OS::instance = 0;
void displayCurrentOSName(void) {
OS &os = OS::getInstance();
std::cout << "current OS name: " << os.getName() << std::endl;
}
void displayCurrentOSVersion(void) {
OS &os = OS::getInstance();
std::cout << "current OS version: " << os.getVersion() << std::endl;
}
int main(void) {
displayCurrentOSName();
displayCurrentOSVersion();
return 0;
}