분류 전체보기 (162) 썸네일형 리스트형 [C++] 템플릿 매개변수, 비타입 템플릿 매개변수 (NonType Template Parameter) 템플릿 매개변수 템플릿을 사용할 때 template 와 같이 사용한다고 했었다. 이때 typename T 와 같이 정의되지 않은 자료형을 사용하기 위한 변수를 타입 매개변수 라고 한다. 비타입 템플릿 매개변수 타입 매개변수 자리에 그냥 변수가 올 수도 있는데 이것을 비타입 템플릿 매개변수라고 한다. 사용하는 방법은 템플릿 매개변수와 동일하다. 따라서 아래 코드처럼 사용할 수 있다. #include template class TestClass {private: int arr[SIZE];};int main(){ TestClass test1; return 0;} 템플릿 매개변수 활용 비타입 템플릿 매개변수와 타입 매개변수를 함께 사용하는 것도 가능하다. 이를 활용하여 아래 코드처럼 어떤 .. [C++] 템플릿 (Template), 함수 템플릿, 클래스 템플릿, 템플릿 특수화 템플릿 (Template) 템플릿은 말 그대로 특정 기능을 구현하기 위한 코드의 틀을 만들어주는 것이다. 즉 일반화된 코드를 작성하여 함수나 클래스에서 다양한 데이터 타입에 대해 재사용할 수 있게 해 준다. 함수를 대상으로 하는 템플릿 함수 템플릿을 사용하여 함수의 구조는 미리 정의하지만 자료형은 정해지지 않은 상태로 두는 것이 가능하다. 예를 들어 아래 코드처럼 작성하였다고 하자. template T Add(T num1, T num2) { return num1 + num2;} 위와 같이 작성하면 자료형은 정의하지 않았지만 어떤 자료형이 오더라도 덧셈 연산을 처리할 수 있다. 위 코드에서 만든 템플릿 함수는 아래 코드처럼 사용이 가능하다. cout (5.5, 2) (1.2, 3.4) 템플릿.. [C++] std::array (array container) 배열을 선언하는 방법 C++에서 배열을 선언할 때 C 스타일 배열을 사용하는 방법과 C++ 표준 라이브러리의 std::array를 사용하는 방법이 있다. C 스타일로 배열을 선언하는 방법은 아래 코드와 같다. int arr[10];int[] arr = new arr[10]; C++ 표준 라이브러리를 사용하여 배열을 선언하는 방법은 아래 코드와 같다. #include std::array arr; 이때 std::array는 array 헤더파일에 정의되어 있기 때문에 #include 를 꼭 해줘야 한다. 초기화하는 방법은 C 스타일 배열과 동일하다. 다차원 배열 선언 std::array를 사용한 2차원 배열의 경우 아래 코드와 같이 선언이 가능하다. array, 10> arr = {0}; .. [Java] 추상 클래스, 추상 메서드 (abstract) 추상 클래스 (abstract class) abstract 키워드를 사용하여 클래스를 선언하면 해당 클래스로는 객체를 생성하는 것이 불가능하다. abstract을 통해서 해당 단계에서 구현할 내용이 없을 때 구현 없이 클래스의 구조만을 선언하는 것이 가능하다. 추상 클래스는 해당 클래스가 아직 미완성이거나 상속을 위해서 빈 클래스가 필요할 때 사용된다. abstract class Shape { // 빈 추상 클래스} 추상 메서드 (abstract method) 추상 메서드는 추상 클래스안에 선언할 수 있는 메서드로 정의가 없고 선언만 되어 있다. 추상 메서드를 포함한 클래스는 하위 클래스에서 반드시 이 추상 메서드를 오버라이딩(정의)해주어야 한다. abstract class Animal.. [Java] super, super 생성자 super super 키워드를 사용하면 SubClass(자식클래스)에서 SuperClass(부모클래스)의 멤버 및 메서드에 접근할 수 있다. 상속을 받았으니 당연히 super 키워드 없이도 사용이 가능하지만 this 키워드처럼 활용할 수 있다. 따라서 아래 코드처럼 부모클래스의 멤버에 접근하는 것이 가능하다. class A { int a;}class B extends A { int a, b; B (int a, int b) { this.a = a + super.a; this.b = b; }} SuperClass 생성자 SubClass 객체를 생성하면 SuperClass의 생성자가 먼저 호출되고 SubClass의 생성자가 호출된다. 이는 아래의 코드를 통해서 확인할 .. [Java] 업캐스팅 (UpCasting), 다운캐스팅 (DownCasting) 업캐스팅 (UpCasting) 부모클래스 타입으로 자식클래스 객체를 호출하는 것을 업캐스팅이라고 한다. 업캐스팅을 사용하게 되면 자식클래스를 부모클래스 타입으로 다루게 되기 때문에 부모클래스의 멤버와 메서드에만접근이 가능하다. 아래 코드처럼 작성하면 a, b 인스턴스는 overriding을 사용한 Print 메서드를 호출하지만 Number 타입을 사용할 수 있다. class Number { public int i, j; public void Print() { System.out.println(i); System.out.println(j); }}class Plus extends Number { @Override public void Print() { .. [Java] 오버라이딩 (Overriding) 오버라이딩 (Overriding) 오버라이딩은 같은 이름의 메서드를 다른 동작을 하도록 정의한다는 점에서 오버로딩과 비슷한 개념이라고 할 수 있다. 오버로딩과 차이점은 상속관계에 있는 Class에서만 사용되며 요구하는 parameter가 동일해야 한다. class Number { public int i, j; public void calculate() { System.out.println("i : " + i + "j : " + j); }}class Plus extends Number { public void calculate() { System.out.println(i+j); }}class Mul extends Number { public void.. [Java] 상속 (Inheritance), extends 상속 (Inheritance) 상속은 Class 간의 계층적 관계를 구성하는 문법이다. 상속받은 Class는 상속된 Class의 특성을 그대로 사용하는 것이 가능하다. 이때 상속되는 Class를 SuperClass(부모 클래스), 상속받는 Class를 SubClass(자식 클래스)라고 한다. 한 클래스는 하나의 SuperClass만을 상속받을 수 있으며 클래스가 그 자체를 상속받는 것은 불가능하다. extends extends 키워드를 사용하여 상속을 명시할 수 있다. 예시 코드를 하나 작성해보겠다. class Number { public int i, j; public void PrintNum() { System.out.println(i); System.out.p.. 이전 1 ··· 3 4 5 6 7 8 9 ··· 21 다음