728x90

분류 전체보기 518

사용할 수 있는 적절한 기본 생성자가 없습니다.

발생 이유 기본 생성자가 없는 클래스의 객체를 기본 생성자로 생성하려고 하면 발생. 해결방법 객체는 여러가지 경우에 생성되며 이 때 특별히 다른 생성자를 지정하지 않는다면 기본 생성자를 필요로 한다. 즉, 기본 생성자를 쓰지 않으면 귀찮은 방법을 사용해야 한다는 뜻이다. 기본생성자를 만들면 안되는 상황이라면 모르겠지만 그렇지 않다면 기본생성자를 만들어두는게 편하다.

에러 모음 2018.07.02

9. 다형성

PART 2. 객체 지향 프로그래밍 - chapter 9. 다형성 1. 다형성(Polymorphism)이란? - 다형성은 객체들의 타입이 다르면 똑같은 메시지가 전달되더라도 서로 다른 동작을 하는 것을 말한다. - 메시지를 보내는 측에서는 객체가 어떤 타입인지 알 필요가 없어야 한다. - 다형성은 객체 포인터나 객체 참조자를 통하여 이루어진다. - 객체 포인터도 기본적으로 타입이 맞는 객체만을 가리킬 수 있지만, 부모 클래스 포인터는 자식 클래스 객체를 가리킬 수 있다. - 이를 상향 형변환이라고 한다. - 상향 형변환을 하면 상속 받은 부분만을 사용할 수 있고 나머지는 사용할 수 없다. 즉 참조할 수 있는 영역의 크기가 축소된다. - 반대로 부모 클래스를 가리키는 포인터가 자식 클래스를 가리키도록 형변..

8. 상속

PART 2. 객체 지향 프로그래밍 - chapter 8. 상속 1. 상속(Inheritance) - 기존에 존재하는 유사한 클래스로부터 속성과 동작을 이어받고 자신에게 필요한 기능을 추가하는 기법 - 자식 클래스가 이미 존재하는 부모클래스로부터 멤버들을 물려받는 것. class ChildClass : /*접근지정자(public, protected, private)*/ ParentClass { ... //추가된 멤버 변수나 멤버 함수 } - 자식 클래스는 항상 부모 클래스를 포함한다. - 부모 클래스(Parent Class) == 슈퍼 클래스(Super Class) == 베이스 클래스(Base Class) - 자식 클래스(Child Class) == 서브 클래스(Sub Class) == 파생된 클래스(D..

7. 클래스의 활용

PART 2. 객체 지향 프로그래밍 - chapter 7. 클래스의 활용 1. 객체 포인터 (Object Pointer) - 객체도 일반 변수처럼 정적 메모리 할당이나 동적 메모리 할당을 할 수 있다. - 정적 생성된 객체에 접근할 때는 .(dot) 연산자를 사용하고, 동적 생성된 객체에 접근할 때는 ->(Arrow)연산자를 사용한다. 2. this 포인터 (this Pointer) - 자기 자신을 가리키는 객체 포인터. - this는 C++의 예약어이므로 식별자로 사용할 수 없으며, 따로 선언하지 않아도 자동으로 생성된다. - 멤버 변수의 이름과 멤버 함수의 매개 변수의 이름이 동일한 경우 멤버 변수의 이름 앞에 'this->'를 붙여야한다. - 그 외에는 함수의 매개변수나 반환값으로 자기자신을 사용할..

6. 생성자와 소멸자

PART 2. 객체 지향 프로그래밍 - chapter 6. 생성자와 소멸자 1. 생성자(Constructor) - 생성자는 객체가 생성될 때 자동으로 호출되어 객체를 초기화하는 역할을 한다. - 생성자는 클래스와 이름이 같고, 반환값이 없는 함수이다. 매개변수는 받으니 여러개의 생성자를 중복 정의할 수 있다. - 생성자가 호출되지 않으면 객체 생성도 안되므로 특수한 경우를 제외하고 생성자는 public으로 선언되어 있어야 한다. - 생성자를 명시적으로 작성하지 않았다면 자동으로 디폴트 생성자가 추가되며, 객체가 생성될 때 디폴트 생성자가 호출된다. - 자동으로 추가된 디폴트 생성자는 매개변수도 없고, 함수 본문도 없으므로 아무일도 하지 않는다. - 다른 생성자를 추가하면 디폴트 생성자는 자동으로 추가되지..

5. string 클래스 (기본사항)

PART 2. 객체 지향 프로그래밍 - chapter 4. 객체 지향 소개 C++에서 문자열을 대신해주는 클래스인 string 클래스. 아래의 대입, 비교 등은 연산자 오버로딩을 이용해 구현해둔 것.//char형 배열로 문자열을 표현하는 것을 대신하는 string클래스 #include #include using std::string; using std::cout; using std::cin; using std::endl; int main() { //string 클래스 사용 cout

4. 클래스의 기초

PART 2. 객체 지향 프로그래밍 - chapter 5. 클래스의 기초 예제 : 날짜 정보를 저장하는 Date 클래스 Date.h #pragma once #include #include //클래스 만들기 class Date { //'private' 직접 접근 불가 private: //'멤버 변수'(=필드) 선언 int year; int month; int day; //'public' 직접 접근 가능 public: std::string memo = "실험"; public: //'멤버 함수'(=메소드) 선언 void setDate(int year, int month, int day); void printDate(); int getYear(); int getMonth(); int getDay(); Date(..

3. 객체, 메시지, 클래스, 인스턴스

Part 2. 객체 지향 프로그래밍 - chapter 4. 객체 지향 소개 1. 객체(Object) - 객체는 상태(State)와 동작(Behavior)으로 구성되어 있다. - 상태는 객체의 특징값(속성)이고, 동작은 객체가 취할 수 있는 동작이다. - 객체의 상태는 필드(멤버 변수)로, 동작은 메소드(멤버 함수)로 표현할 수 있다. 2. 메시지(Massage) - 대부분의 객체는 무언가를 실행하기 위해서 다른 객체를 필요로 한다. 이를 위해서는 객체간의 통신 메커니즘이 필요하다. - 객체는 메시지(Massage)를 통해 다른 객체와 통신하고 상호 작용한다. - 메시지는 메시지를 받는 객체, 메시지의 이름, 메시지의 매개 변수의 세 가지의 구성 요소로 이루어진다. - "메시지 전달"은 곧 "멤버 함수 호..

반응형