template <typename T>
class Test
{
public:
T add(T a, T b) { return a + b; }
template <typename E>
E sub(E a, E b) { return a - b; }
};
template <int length>
class Test
{
private:
int * arr;
public:
Test() { arr = new int[length]; }
};
void main(void)
{
Test<4> t;
}
#include <iostream>
#include <exception>
class Test
{
public:
int invokeException() throw (std::exception)
{
throw std::exception();
}
};
int main(void)
{
Test t;
try
{
t.invokeException();
}
catch (std::exception e)
{
std::cout << "Catch!" << std::endl;
}
return 0;
}
class CustomException
{
public:
void testMethod() throw(std::exception);
};
class CustomExceptionChild : public CustomException
{
public:
void testMethod() throw(std::exception);
};
class CustomeExceptionChildChild : public CustomExceptionChild
{
public:
void testMethod() throw(std::exception);
};
// 자식 클래스에서 예외가 발생했음에도 불구하고 catch 구문이 없을 때, 작업을 중단하고 catch 구문을 발견할 때까지 부모 클래스로 예외 처리가 전달되는 현상.
class CustomException
{
public:
static void Test() _NOEXCEPT; // 예외가 발생하지 않음을 보장합니다.
void ExceptTest() throw (); // throw 리스트 내부에 있는 예외가 발생할 수 있습니다.
};
// _NOEXCEPT를 선언했는데 예외가 발생할 경우... 재밌는 일이 일어납니다.
* std::exception
class MyException : public std::exception
{
public:
const char * what() const _NOEXCEPT
{
return "Oooops!\n";
}
};
// std::exception에 들어있는 what 메서드가 중심.