전체 글 썸네일형 리스트형 [20] 상속 상속 새로 확장되는 클래스가 기존 클래스의 멤버를 물려받는 것을 말합니다. 이렇게 상속하는 행위를 "클래스를 파생한다."라고 합니다. 기본 클래스 상속을 다른 클래스에게 하는 클래스를 말합니다. 파생 클래스 다른 클래스로부터 상속을 받는 클래스를 말합니다. 파생 클래스 선언 클래스를 파생하는 방법은 아래와 같습니다. 이렇게 하면, Herbivore클래스는 Animal 클래스의 멤버를 상속받아서 자신의 멤버처럼 사용할 수 있습니다. 파생 클래스 객체 생성 파생 클래스의 객체를 생성하는 방법은 일반 클래스의 객체를 생성하는 것처럼 생성합니다. 위의 이미지처럼 파생 클래스에서도 기본 클래스의 멤버를 이용할 수 있습니다. 파생 클래스 객체 생성시 호출되는 기본 클래스 생성자 선택하기 위에서 클래스 Herbivo.. 더보기 [19] 정적 멤버 멤버와 객체 클래스의 멤버는 객체를 생성한 후에 각 객체의 멤버에 접근을 할 수 있습니다. 이렇게 객체와 멤버가 연결되어있는 상태를 "클래스 00에 연결되었다."라고 합니다. 반면, 객체를 생성하지 않고도 이용할 수 있는 멤버가 있는데 이를 "클래스 전체에 연결되었다."라고 합니다. 클래스 전체에 연결된 멤버는 특징을 하나 갖고 있습니다. 그 특징은 아래에서 알아보도록 하겠습니다. 정적 멤버 클래스 전체에 연결된 멤버를 말합니다. 사용할 때는 앞에 static(기억 클래스 지정자)을 붙여서 사용합니다. 정적 데이터 멤버 초기화 정적 데이터 멤버를 초기화하기 위해서 모든 함수와 클래스의 바깥에 위와 같이 적습니다. 어떤 타입이고, 어느 클래스의 멤버인지 컴파일러에게 알려줍니다. 정적 데이터 멤버는 모든 객.. 더보기 [18] 생성자 생성자 클래스로부터 객체가 생성될 때 자동으로 호출되는 특별한 멤버함수입니다. 생성자는 리턴값이 없습니다. 생성자도 멤버 함수이기 때문에, 먼저 클래스에 선언을 해줘야 합니다. 위와 같이 생성자가 객체가 생성됨과 동시에 실행되는 것을 볼 수 있습니다. 생성자 오버로드 생성자 또한 일반 함수처럼 인수의 개수와 타입을 다르게 해서 오버로드를 할 수 있습니다. 생성자를 오버로드하고 객체를 생성했을 때 조건에 맞는 생성자가 호출되었습니다. 생성자를 정의하지 않는 경우 클래스에 생성자를 만들지 않는 경우에는 컴파일러가 빈 생성자를 만들어서 호출합니다. 이 생성자를 "기본 생성자"라고 합니다. 이 생성자는 아무 일도 하지 않습니다. 단, 하나라도 생성자가 정의되어 있을 경우, 이 기본 생성자는 만들어지지 않습니다... 더보기 [17] 인수와 객체 구조체와 인수처럼 클래스도 인수로 전달할 수 있습니다. 저희는 다음 순서로 정리를 해 보겠습니다. 1. 객체를 인수로 넘기는 경우 2. 객체 포인터를 인수로 넘기는 경우 3. 레퍼런스를 인수로 넘기는 경우 객체를 인수로 넘기기 객체를 인수로 넘길 때는 함수의 가인수로 클래스 타입을 받습니다. Show함수에 객체 rat를 넘겨서 멤버를 출력했습니다. 객체 포인터를 인수로 넘기기 포인터를 넘길때는 주소 값을 넘겨야 함을 유의합니다. 포인터로 주소를 넘기면 값을 복사하지 않기 때문에 실행 속도를 향상시킬 수 있습니다. 레퍼런스를 인수로 넘기기 레퍼런스를 넘길 때는 가인수의 타입 뒤에 &를 붙여야 하고, 일반함수에 넘기는 것과 같이 객체만 넘기면 되지만, 값을 복사하지 않고 실인수를 직접 전달한다는 차이가 있습.. 더보기 [16] 접근 제한 접근 제한의 필요성 클래스의 멤버에 아무런 제약 없이 값을 대입하게 되면 뜻하지 않은 오류가 생길 수 있습니다. (예를 들면, 동물의 다리 개수를 입력하는데 -값이 들어갈 수는 없습니다.) 그렇기 때문에 접근을 제한해야 할 필요가 생깁니다. 저희는 제한자를 사용해 접근을 제한하는 방법을 알아보겠습니다. private 클래스 외부에서 마음대로 접근할 수 없는 멤버를 만드는 기능을 지원하는데 이런 멤버를 private멤버라고 합니다. 이 경우 다른 함수내에서 대입이 불가능합니다. public 클래스 외부에서도 멤버에 마음대로 접근할 수 있도록 해주는 기능입니다. 함부로 접근할 수 없는 기능은 좋지만, 필요에 따라서 접근해서 값을 변경해야 하는 경우도 있습니다. 이럴 때는 public을 사용합니다. publi.. 더보기 [15] 클래스 클래스 클래스는 사용자 정의형의 한 종류이며, 어떤 대상의 성질이나 기능을 프로그램으로 표현하기 위해 사용하는 개념입니다. 클래스 선언 클래스를 작성하는 작업을 말합니다. 데이터 멤버와 멤버함수 클래스 내부에 선언된 변수를 "데이터 멤버", 함수를 "멤버 함수"라고 부릅니다. 범위 결정 연산자 & 멤버 함수 정의 멤버 함수는 클래스 내부가 아닌 바깥에 작성합니다. 이때, 정의하면서 다른 일반 함수의 정의와 헷갈릴 수 있기 때문에, 범위 결정 연산자를 붙여 어떤 클래스의 멤버 함수인지 나타냅니다. 객체 또는 인스턴스 구조체처럼 클래스도 클래스형 변수를 선언할 수 있습니다. 이때 선언된 변수를 객체 또는 인스턴스라고 합니다. 멤버 접근 클래스의 멤버에 접근할 때는 도트 연산자(.)를 사용합니다. 동적 생성 .. 더보기 영어에 대하여... 저는 영어도 필요하다고 느껴서 시간이 날 때마다 조금씩 하고 있습니다. 예전부터 토익시험 점수가 필요해서 가끔씩 보면 OMR아래에 영어를 공부할 때 무엇을 가장 중요하게 여기냐는 질문이 있고, 저는 항상 말하기와 쓰기라고 적었는데요.. 자유로운 말하기와 쓰기가 언어의 가장 마지막 단계라고 생각했습니다. 왜냐하면, 말하기가 되는데 리스닝이 안 되는 사람은 없고, 쓰기가 틀리는 것 없이 잘 되는데 읽기가 안 되는 사람은 없다고 생각했기 때문입니다. 그래서 종종 말하기와 쓰기를 어떻게 하면 잘할까 고민하곤 했는데요. 아직도 정확한 방법은 잘 모르겠지만, 지금 하고 있는 생각은 문법은 보조로 하고, 단어의 쓰임(뉘앙스)과 말을 할 때의 그 느낌 자체에 집중을 하려고 합니다. 이렇게 공부를 했을 때 뭔가 좀 더 .. 더보기 [14] typedef, 구조체, 공용체 typedef 이 키워드를 사용해서 기존에 있던 타입이나 새로 정의한 타입의 이름을 바꿔서 사용할 수 있습니다. 위의 이미지들처럼 타입의 이름을 새로 정의해서 사용할 수 있다는 것을 알아두면 됩니다. 다양한 형 코딩을 하면서 다루는 타입은 다양합니다. 대표적으로 아래와 같이 나눌 수 있습니다. 지금부터 설명할 내용은 C와 굉장히 유사하므로 읽고 넘어가려고 했으나, 복습하는 차원에서 간단하게 설명하고 넘어가겠습니다. 구조체형 구조체형은 사용자 정의형입니다. 다른 타입들을 묶어서 표현할 수 있는 특징이 있습니다. 구조체에 여러 타입들을 묶는 것을 "구조체형 선언"이라고 합니다. 멤버 구조체 안에 선언된 변수입니다. 도트 연산자 멤버들을 읽어오거나 값을 대입하기 위해서는 도트 연산자(.)를 사용합니다. 위의 .. 더보기 이전 1 2 3 4 5 6 7 ··· 9 다음