纯粹练手,没有任何实际意义。
#include <iostream>
using namespace std;
template <class T, int size>
class HelloA{
public:
HelloA() {
cout << "Hello, World!\n";
}
char* print(float x, T t);
HelloA(short x, int y, T t);
protected:
short x;
private:
int y;
T t;
};
template <class T, int size>
HelloA<T, size>::HelloA(short x, int y, T t){
this->x = x;
this->y = y;
this->t = t;
y = size;
}
template <typename T, int size>
char* HelloA<T, size>::print(float x, T t){
//因为没有对<<操作符进行重载,所以这里t应该定义为一个基本类型。
//否则产生异常。
cout << "x = " << x << "\t\t" << "t = " << t << endl;
}
template <class T>
class HelloB:public HelloA<const char*, 100> {
public:
HelloB():HelloA(){}
HelloB(short x, int y, T t):HelloA(x , y , t){}
protected:
private:
};
int main(void) {
HelloB<const char*> hellob;
hellob.print(25, "print() Hello, World!");
HelloA<int, 100> helloa(20, 20, 100);
helloa.print(3.3, 20);
HelloB<const char*> hb(2, 30, "GOOD!\n");
hb.print(200, "HAPPY EVERY DAY!");
}
/*
C:\Users\Administrator>g++ -o MyClass.exe MyClass.cpp
C:\Users\Administrator>MyClass
Hello, World!
x = 25 t = print() Hello, World!
x = 3.3 t = 20
x = 200 t = HAPPY EVERY DAY!
*/