1.virtualDestructorOfBaseClass
#include<iostream>
using namespace std;
class Basea {
public:
Basea() {
cout << "it is Basea" << endl;
}
virtual ~Basea() {
cout << "destruction of Basea" << endl;
}
};
class derived:public Basea {
public:
derived() {
cout << "it is derived" << endl;
}
~derived() {
cout << "destruction of derived" << endl;
}
};
int main() {
Basea* p = new derived;
delete p;
return 0;
}
2.default function
#include<iostream>
using namespace std;
void func(int a = 0, int b, int c = 0) {
cout << a << endl;
cout << b << endl;
cout << c << endl;
}
int main() {
func(1);
return 0;
}
3.static member function
#include<iostream>
using namespace std;
class test {
private:
static int count;
int num;
public:
test(int a) {
count++;
num = a;
}
static int getCount();
};
int test::count = 0;
int test::getCount(){
return count;
}
int main() {
cout << test::getCount() << endl;
test t = test(1);
cout << t.getCount() << endl;
return 0;
}
4.inheritance
#include<iostream>
using namespace std;
class A {
public:
A() {
cout << "A" << endl;
}
~A() {
cout << "~A" << endl;
}
};
class B {
public:
B() {
cout << "B" << endl;
}
~B() {
cout << "~B" << endl;
}
};
class C : public B, public A {
public:
C() {
cout << "C" << endl;
}
~C() {
cout << "~C" << endl;
}
};
int main() {
C c;
return 0;
}
5.inheritance again
#include<iostream>
using namespace std;
class BASE {
public:
BASE();
void get_ij();
static void get() {
cout << count << endl;
}
protected:
int i, j;
static int count;
private:
int x_temp;
};
int BASE::count = 0;
class Y:public BASE {
public:
Y() {
count++;
}
void increment();
private:
float nmember;
};
BASE::BASE() {
count++;
i = j = x_temp = 0;
}
void BASE::get_ij() {
cout << i << ' ' << j << endl;
}
void Y::increment() {
i++;
j++;
}
int main() {
BASE obj1;
obj1.get();
Y obj2;
obj2.increment();
obj2.get_ij();
obj1.get();
obj2.get();
obj1.get_ij();
}