학습동아리 4차시

정민경·2022년 10월 31일
0

2022_학습동아리

목록 보기
4/12
post-thumbnail

- 활동 일시

  • 일시 : 2022.10.19(수) 19:00 ~ 21:00 (총 2시간)

- 오늘의 계획

  • c++ 언어 공부하기
    • Class
    • Constructor
    • Namespace

- 오늘의 활동

1) Class

  • Class declaration syntax
class name {
  ((access-modifier:)?
  	[member-field member-function]*)*
};
  • Access modifier (접근 지정자)
    - private : 같은 class 내에서만 접근 가능
    - protected : 같은 class와 chile class 에서만 접근 가능
    - public : 모든 class에서 접근 가능

  • Class 선언 시 declaration(선언)과 definition(정의) 분리
    - declaration(선언) : What it is (interface) <- header file(.h)

    ReturnType FunctionName (Parameters);

    - definition (정의) : How it works (implementation) <- source file(.cc)

    ReturnType ClassName::FunctionName (Parameters) { BodyStmt; }


2) Constructor - 생성자

Constructor의 종류
- Default constructor
- Implicit conversion constructor
- Explicit conversion constructor
- Copy constructor

  • Default constructor : parameter를 가지지 않는 생성자
    (parameter를 가질수도 있자면 모든 parameter는 default value이다.)

    개발자가 구현하지 않아도 compiler가 자동으로 생성해준다.
    Car() : name_("mycar") { }
  • Implicit conversion constructor : explicit keyword를 사용하지 않는 생성자
    (Google C++ style guid에서는 추천하지 않는 방식)

    Car(std::string name) : name_(name) { }
  • Explicit conversion constructor : explicit keyword를 사용하는 생성자
    (명시적 type conversion으로 생성할 때 사용
    google C++ style guide에서 추천하는 방식)

    explicit Car(std::string name) : name_(name) { }
  • Copy constructor : object를 copy해 사용하는 생성자

        Car(const Car& car) : name_(car.name_) {
            for(int  = 0; i < 4; i++) {
                doors_[i] = car.doors_[i];
            }
        }

3) namespace : code가 선언되어있는 지역 (잘사용하면 매우 좋음.)

  • "main" function은 어떠한 namespaces에도 속해있지 않다.
    - 아래와 같이 같은 이름의 변수가 동시에 선언되어있다면 에러가 발생한다.

  • namespace를 사용하면 동일한 이름의 변수를 정의해도 namespace로 접근하게 되면 에러가 발생하지 않고 올바르게 출력된다.



- 활동 소감

오늘은 언어의 기본이 될 수 있는 class, constructor, namespace에 대해 공부했다. class와 constructor는 기존에 공부했던 java, C언어와 유사하기 때문에 쉽게 이해할 수 있었고, namespace라는 개념은 이번에 C++을 공부하며 처음 접하게 되었다. java에서 class에 선언한 뒤 classname.funcion을 접근하는 느낌이라 신기했다. C++은 공부할수록 점점 더 재밌어지는 언어인 것 같다.

0개의 댓글