본문 바로가기
반응형

SWE/C++ OOP43

[C++11] auto 데이터 타입 정리 c++11 부터 std에 추가된 auto keyword c++ 에서 사용되는 데이터 타입으로는 int, bool, string, double, .. 이 있을 수 있다. 이 모든 것을 대신할 수 있는게 auto keyword이다. 보통 개발자가 변수의 자료형을 선택하는데, auto keyword는 컴파일러가 자료형을 선택한다. ( 개발자 입장에서는 값에 따라 자동으로 타입이 결정되므로 편할 수 있다.) 기본 사용법 using namespace std; auto value1 = 1; auto value2 = "haha"; auto value3 = 3.14; 다른 데이터 타입과 마찬가지고 '자료형 변수이름 = 값' 으로 사용하면 된다. 위에서 value1은 integer, value2은 string, valu.. 2021. 4. 23.
[c++] private virtual function 재정의 할 수 있다 가상함수를 priviate 멤버로 선언하면 자식 클래스에서 재정의가 가능할까? 결론부터 말하자면 재정의 가능 이다 c++의 규칙 : "상속받은 private 가상 함수를 파생 클래스가 재정의 할 수 있다." 이 함수는 재정의해 놓고 호출할 수도 없는데 설계상의 모순이 아닌가? 라는 생각이 들 수 있다. 그러나 가상 함수를 재정의하는 일은 어떤 동작을 어떻게 구현할 것인가를 지정하는 것이고, 가상 함수를 호출하는 일은 그 동작이 수횅될 시점을 지정하는 것이다. 따라서 이 경우에, 어떤 기능을 어떻게 구현할지를 조정하는 권한은 파생 클래스가 갖게 되지만, 함수를 언제 호출할지를 결정하는 것은 기본 클래스만의 고유 권한이다. 출처 : 책 Effective C++ 제3판 그렇다면, 가상함수를 private으로 .. 2020. 6. 23.
call by value, call by reference 비교 / 함수 인자 복사 함수의 매개변수는 두 가지 할당 방법이 존재한다. 하나는 '값에 의한 호출(call by value)', 다른 하나는 '참조에 의한 호출(call by reference)' 하나는 함수 내부에서 값을 변경하여도 해당 변수에 반영이 되지 않고, 하나는 해당 변수의 값이 변한다. 자세히 살펴보자 call by value, call by reference 비교 call by value(값에 의한 호출) 이란? : '변수'가 아닌, 인자의 '값'이 복사되어 전달 간단하게, call by value 변수는 실제로 지역변수라고 보면 된다. 함수안에서만 수정이 되고, 수정된 값을 해당 함수 바깥에서 호출해도 변경되지 않은 값이 유지된다. 복사된 값이 전달되었기 때문에, 원본에는 변함이 없는 것이다. - 작성방법 예시.. 2020. 2. 25.
추상클래스를 인스턴스화할 수 없습니다 c++언어에서는 멤버 메서드 중에 순수 가상 메서드를 하나라도 갖고 있는 클래스는 추상 클래스입니다. 순수 가상메서드는 virtual키워드로 메서드를 선언하고 메서드 내부를 정의하지 않겠다는 =0;을 표시한 메서드를 말합니다. 그리고 순수 가상 메서드는 다른 oop언어에서 추상 메서드와 같은 의미입니다. 다음은 순수 가상 메서드를 갖고 있는 A클래스 개체를 생성하려고 할 때 나오는 오류 화면입니다. : 추상 클래스를 인스턴스화할 수 없습니다. ->해결방법은 기반 형식에 순수 가상 메서드가 있을 때 파생 형식에서 이를 재정의해줘야한다. 그렇지 않으면, 파생 형식도 추상 클래스이다. 따라서 파생 형식을 구상 클래스로 만들기 위해서는 반드시 기반 형식에 순수가상메서드를 재정의 해야한다. 2020. 1. 4.
반응형