연습 문제 1번 Base 클래스와 Base 클래스를 상속받는 Derived1과 Derived2 클래스가 있다고 합시다. 이 클래스를 다형성 관계로 활용하려고 합니다. 각 클래스에 가상 print 함수와 가상 소멸자가 있는 경우의 가상 테이블을 그림으로 표현하세요. 2번 다음과 같은 두 클래스가 있다고 합시다. 두 클래스가 다형성을 갖게 스택 메모리 위에 인스턴스화하는 코드를 작성하세요. 다형성을 활용한다는 것은 부모 클래스에 대한 포인터를 사용한다는 것입니다. 다만 객체의 실체를 스택 메모리에 만들어서 활용하라는 것이 문제의 포인트입니다. class First { private: int fr; public: First(int fr); virtual ~First(); virtual void print() ..
연습문제 1번 다음과 같이 2개의 클래스를 정의했을 떄, 위임(delegation)을 사용해서 두 클래스의 set 함수와 print 함수를 정의해주세요. //First 클래스 선언 class First { private: int a; public: void set(int a); void print() const; }; //Second 클래스 선언 class Second :public First { private: int b; public: void set(int a, int b); void print() const; }; 풀이. //First 클래스의 메소드 정의 void First::set(int a2) { First::a = a2; } void First::print() const { cout
c 스타일 배열을 2차원으로 선언하는 방법은 간단하다. arr[i][j]와 같이 선언하면 된다. 벡터를 2차원으로 선언하려면 어떻게 해야 할까? 2차원 배열은 크기가 i*j인 표의 형태로 이해하기 마련이다. 실상은 i개의 배열이 있고, 각각의 원소가 j개의 배열을 가리키고 있는 형태이다. 다시 말해 배열이 배열을 담고 있는 형태이다. arr[][0] arr[][1] arr[][2] arr[0] → arr[0][0] arr[0][1] arr[0][1] arr[1] → arr[1][0] arr[1][1] arr[1][2] arr[2] → arr[2][0] arr[2][1] arr[2][2] arr[3] → arr[3][0] arr[3][1] arr[3][2] 벡터도 이와 같이 벡터가 벡터를 담은 형태로 선언..
객체에는 특별한 멤버 함수인 생성자와 소멸자가 있다. 생성자가 호출되면 객체가 생성되고, 소멸자가 호출되면 객체가 정리된다. 생성자 생성자는 객체를 생성하는 멤버 함수이다. 생성자 내부에서 객체의 데이터 멤버를 초기화한다. 클래스를 정의할 때 멤버를 선언한다고 초기화가 이루어지는 것은 아니다. 선언 과정에서는 멤버의 이름과 자료형만 지정한다. 생성자는 1. 객체를 생성하고 데이터 멤버를 초기화하는 역할을 수행하므로 리턴값을 가질 수 없다. 2. 이름이 클래스의 이름과 같다. 3. 멤버를 초기화하려면 값을 변경해야 하므로 const 한정자를 붙일 수 없다. 4. 멤버 함수이므로 클래스 정의에서 선언해야 한다. class Circle { public: /*생성자*/ Circle(double radius);/..
C++에서는 새로운 자료형(타입)을 만들 때 클래스(class)를 사용한다. 타입으로 클래스를 만들고, 이를 기반으로 인스턴스인 객체를 만든다. 클래스를 기반으로 인스턴스를 만드는 행위를 인스턴스화(instantiation)이라고 부른다. 객체 지향 프로그래밍에서는 속성과 행위를 선언하는 클래스 정의, 행위를 정의하는 멤버 함수 정의, 객체를 인스턴스화하고 사용하는 애플리케이션 구현이 필요하다. 클래스 작성하기 클래스 정의 #include using namespace std; //클래스 정의 class Circle { private: double radius; public: double getArea() const; void setRadius(double value); }; //멤버 함수 정의 doubl..
카운터 제어 while 반복문 #include using namespace std; int main() { int counter = 0; while (counter > num; } cout > 연산자를 입력하면 된다. 이 연산자는 스트림에서 항목을 읽다가 EOF를 만나면 false를 리턴한다. //키보드 while(cin >> num) { ... } //파일 while(infile >> num) { ... } //키보드 입력 EOF로 반복 종료하기 #include using namespace std; int main() { int num; int sum{0}; while (cin >> num) { sum +..
내 블로그 - 관리자 홈 전환 |
Q
Q
|
---|---|
새 글 쓰기 |
W
W
|
글 수정 (권한 있는 경우) |
E
E
|
---|---|
댓글 영역으로 이동 |
C
C
|
이 페이지의 URL 복사 |
S
S
|
---|---|
맨 위로 이동 |
T
T
|
티스토리 홈 이동 |
H
H
|
단축키 안내 |
Shift + /
⇧ + /
|
* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.