목록전체 글 (350)
미누에요

문제 에제 PointConsoleOutput.cpp에서 정의한 Point 클래스를 대상으로 아래의 main함수가 보이는 대로 데이터의 입력이 가능하도록, 그리고 실행의 예에서 보이는 대로 출력이 이루어지도록 >> 연산자를 오버로딩하자. PointConsoleOutput.cpp#includeusing namespace std;class Point{private: int xpos, ypos;public: Point(int x=0, int y=0) : xpos(x), ypos(y){} void ShowPosition() const{ cout main함수int main(void){ Point pos1; cout > pos1; cout > pos2; cout ..

문제 1 : 멤버 함수의 형태로 오버로딩부호 연산자로서 -는 단항 연산자이다. 이 연산자는 피연산자의 부호를 반전시킨 결과는 반환한다. 예를 들어서 다음 문장이 실행되면,int num2 = -num1; num2에는 num1과 절대값은 같지만 부호가 다른 값이 저장된다. 물론 num1의 값에는 영향을 미치지 않는다.이와 유사하게 Point 클래스를 대상으로 - 연산자를 오버로딩 해보자. 다음의 문장이 실행되면,Point pos2 = - pos1; pos2의 멤버변수는 pos1의 멤버변수 값과 다른 부호의 값으로 초기화되도록 오버로딩 해보자. 정답// - 연산자 오버로딩#includeusing namespace std;class Point{private: int xpos, ypos;public: ..

문제 1Point 클래스에 대해서 다음 조건을 만족하는 형태로 - 연산자를 오버로딩 해보자.전역함수 기반으로 오버로딩멤버 별 - 연산의 결과를 담은 Point 객체 반환 정답// Point 클래스에 대해 - 연산자 오버로딩#includeusing namespace std;class Point{private: int xpos, ypos;public: Point(int x=0, int y=0):xpos(x),ypos(y){} void ShowPosition() const{ cout 실행 결과 문제 2Point 클래스에 대해서 다음 조건을 만족하는 형태로 += 연산자와 -= 연산자를 오버로딩 해보자.멤버함수 기반으로 오버로딩연산 'pos1 += pos2'의 결과로 pos1 의..

C++에서는 다중 상속이 가능하다.가능하다고 하더라고 발생할 수 있는 문제점이 많아 사용하는 것을 권장하지는 않지만, 다른 언어들과는 다른 C++만의 특징이기 때문에 짚고 넘어가겠다. 다중 상속(Multiple Inheritance)Java와 같은 언어와 다르게, C++은 두 개 이상의 부모에 대한 상속을 지원한다.#includeusing namespace std;class A{public: A(){}};class B{public: B(){}};class C: public A, public B{public: C():A(),B(){}}; 위 코드는 클래스 A, B를 클래스 C가 다중상속을 통해 상속받고 있는 코드이다.상속을 작성할 때는 콤마(,)를 사용하여 여러 개를 작성할 수 있다. ..

C++에서 상속과 다형성의 개념을 사용하다 보면, 오버라이딩 된 함수 중 원하는 것을 호출하기 힘든 상황이 있다. 예를 들어, 아래와 같이 Animal, MomDog, BabyDog라는 클래스가 존재하고 Animal #includeusing namespace std;class Animal{private: int age; int height;public: Animal(int a, int h) : age(a), height(h){} void Introduce(){ cout Introduce();} 실행 결과 main함수에서 다형성 중 업캐스팅을 사용하여 Animal 클래스의 참조로 BabyDog 객체를 가리키고 있다.이 상황에서 우리는 Introduce 함수를 실행하면 ..

문제예제 EmployeeManager4.cpp 를 확장하여 다음 특성에 해당하는 ForeginSalesWorker 클래스를 추가로 정의해보자."영업직 직원 중 일부는 오지산간으로 시장개척을 진행하고 있다. 일부는 아마존에서, 또 일부는 테러의 위험이 있는 지역에서 영업활동을 진행 중에 있다. 따라서 이러한 직원들을 대상으로 별도의 위험수당을 지급하고자 한다." 위험수당의 지급 방식은 '위험의 노출도' 에 따라서 다음과 같이 나뉘며, 한번 결정된 직원의 '위험노출도'는 변경되지 않는다고 가정한다.(이는 const 멤버변수의 선언을 유도하는 것이다.)리스크 A : 영업직의 기본급여와 인센티브 합계 총액의 30%를 추가로 지급한다.리스크 B: 영업직의 기본급여와 인센티브 합계 총액의 20%를 추가로 지급한다..

현실에서 상속이란 단어는 부모와 자식 간의 재산 상속의 의미로 많이 사용되곤 한다.하지만 프로그래밍에서는, 같은 기능을 가지고 있는 클래스들을 묶기 위해서 사용한다. 아래와 같은 상황에서 자주 사용하게 된다.이미 만들어둔 클래스를 가지고 기능과 변수를 추가하여 새로운 클래스를 만들 때 같은 기능을 하는 클래스가 있다면 그 두 클래스를 하나의 부모 클래스로부터 상속하게 만든다! 예를 들어, 에어팟의 기능을 나타내는 클래스가 존재한다고 하자.class Airpods{private: int battery; int volume;public: Airpods(int bat, int vol):battery(bat),volume(vol){} void music(){ cout 그리고,..

static 키워드를 공부하다 보면 일반적인 전역 변수와 같은 게 아닌가 ? 싶은 의문점이 들 것이다.만약 같은 개념이라면, 굳이 "전역 변수" 라는 용어 외에 static 이라는 키워드가 존재하지 않았을 것이다. 일반적인 전역 변수#includeusing namespace std;int n = 0; // 전역 변수 선언void showN(){ n++; cout 위 코드는 전역 변수를 선언하여 사용하는 코드이다.결과는 위와 같다. static 전역 변수#includeusing namespace std;static int n = 0;void showN(){ n++; cout 그리고, 위 코드는 static 전역변수를 사용한 코드이다.결과는 일반적인 전역 변수를 사용한 코드와 동일하..

static"전역"의 의미를 갖는 static 키워드를 사용하여 선언한 변수는, 프로그램 시작부터 종료까지 존재하게 된다.#includeusing namespace std;void showN(){ static int n = 0; // n은 사라지지 않고 계속 존재 n++; cout n이 static으로 선언되었기 때문에 1 이 5번 출력되는 것이 아니고 1 2 3 4 5 순으로 출력되게 된다. 반대로, 함수 밖의 전역 범위에 있는 경우도 있다.이런 경우에는 static을 붙이지 않아도 전역 변수로써 작동한다. (정확히는 두 방식은 차이가 있다. 다음 게시글에서 다루겠다.)#includeusing namespace std;static int n = 0;void showN(){ n++..

friendC++에서의 friend 선언은 해당 객체에 대해 접근을 허용할 때 사용한다.한마디로, 해당 객체의 private 영역에 대한 접근을 허용하게 해주는 키워드인 셈이다.자세한 건 예시를 통해 확인해보자. 우선, friend 선언은 가급적 사용을 지양해야 하며, 되도록 사용하지 않도록 프로그래밍 해야한다는 점을 기억하자 friend 선언이 사용되는 경우는 크게 두 가지가 존재한다. 1. 해당 객체가 다른 객체의 멤버에 대해 접근이 가능하도록 하고싶을 때#include#includeusing namespace std;class Girl;class Boy{private: int height; friend class Girl; // friend 선언public: Boy(int len)..