#include <iostream>
template <typename T>
class CTemplate {
private:
T data;
public:
CTemplate(T d) {
data = d;
}
T getData() {
return data;
}
};
int main()
{
CTemplate<int> obj(100);
std::cout << "data: " << obj.getData() << std::endl;
CTemplate<std::string> obj2("클래스 템플릿 테스트");
std::cout << "data: " << obj2.getData() << std::endl;
return 0;
}
#include <iostream>
template <typename T>
class CTest {
private:
T num;
public:
CTest(T n) : num(n) {
}
T getData() {
return num;
}
};
template <>
class CTest<char> {
private:
char data;
public:
CTest(char d) : data(d) {
}
char getData() {
return data;
}
};
int main()
{
CTest<int> obj(10);
std::cout << obj.getData() << std::endl;
CTest<char> obj2('a');
std::cout << obj2.getData() << std::endl;
return 0;
}
#include <iostream>
template <typename T, int sz>
class CTest {
private:
T arr[sz];
public:
T& operator[](int idx) {
if (idx < 0 || idx >= sz) {
std::cout << "Error" << std::endl;
exit(1);
}
return arr[idx];
}
void getData() {
for (int i = 0; i < sz; i++) {
std::cout << arr[i] << std::endl;
}
}
};
int main()
{
CTest<int, 5> obj;
obj.operator[](0) = 10;
obj[1] = 20;
obj[2] = 30;
obj[3] = 40;
obj[4] = 50;
obj.getData();
std::cout << obj[0] << std::endl;
return 0;
}