무리스

반응형

[패스트캠퍼스 수강 후기] {C++실력완성} 100% 환급 챌린지 {22} 회차 미션

 

안녕하세요. 무리스입니다.

 

한 주의 시작 월요일이 시작되었네요.

이번 한 주도 즐겁게 C++ 공부를 시작해봅시다.

오늘은 패스트캠퍼스 환불챌린지 데일리미션 22회차입니다.

22회차에서는 06강, 07강, 08강 순으로 진행됩니다.

 

06강에서는 클래스 - this 포인터에 대해서 배워보도록 하겠습니다.

클래스 내의 멤버 변수나 멤버 함수에 접근이 가능합니다.

this 포인터는 해당 객체 자체를 가리키는 포인터인데요,

기존 멤버 변수, 멤버 함수에 접근할 때 this 포인터를 통해서 접근할 수 있습니다.

 

코드를 통해 알아보도록 하겠습니다.

#include <iostream>

using namespace std;

class Person
{
private:
   float weight;
   float height;
   
public:
   Person(float weight, float height)
      : weight(weight), height(height)
   {
   
   }
   
   void loseWeight(float weight)
   {
      this_weight -= weight;
      if (this->weight <0)
          this->weight =0;
   }
   
   void skipMeals(int times)
   {
      this->loseWeight(times * 0.5f);
   }
};
int main()
{
   Person person(67.3f, 172.3f);
}
   

또, 다른 코드로는

#include <iostream>

using namespace std;

class Person
{
private:
   float weight;
   float height;
   
public:
   Person(float weight, float height)
      : weight(weight), height(height)
   {
   
   }
   
   float getBMI()
   {
      return weight / (height * 100 * height * 100);
   }
   
   Person& complete(Person& person)
   {
      if (this->getBMI() < person.getBMI())
          return *this;
      else
          return person;
    }
    
    void doCeremony()
    {
       cout << name << " win!!" << endl;
    }
 };
 int main()
 {
    Person person0(67.f, 172.3f, "david");
    Person person1(58.2f, 167.3f, "daniel");
    
    person0.complete(person1).doCeremony();
 }

출력값을 보면 daniel이 체지방 지수가 더 낮다고 하네요.

 

다음 07강에서는 클래스 - const에 대해서 배워보겠습니다.

const 복습 코드를 써보자면

#include <iostream>

using namespace std;

class Person
{
Private:
   const string _name = "abc";
   
public:
   Person(const string& name) : _name(name)
   {
   }
};
int main()
{

}

이런 식으로 const 코드를 작성해봤습니다.

 

이번에 작성할 const 코드는 아래와 같습니다.

#include <iostream>

using namespace std;

class Person
{
private:
   const string _name;
   float _weight;
   float _height;
   
public:
   Person(const string& name, float weight, float height)
      : _name(name), _weight(weight), _height(height)
   {
   }
   
   float getWeight(/* const Person* this*/) const
   {
      return _weight;
   }
};
int main()
{
   const Person person0("Daniel", 56.f, 174.f);
   person0.getWeight();
}

일반 pointer를 const pointer로 변환이 되는데

const pointer는 일반 pointer로 변환이 안됩니다.

이것만 기억하시면 될 것 같네요.

 

다음은 08강 클래스 - 정적 멤버에 대해서 알아보겠습니다.

멤버 변수나 멤버 함수 앞에 static을 붙이면 정적 멤버가 됩니다.

그러면 정적 공간에 저장을 하게 되고, 프로그램 실행 중에 메모리 할당이 한번 주어지고

프로그램이 종료될 때 메모리가 해제되는 것입니다.

 

이번에는 헤더파일과 cpp파일로 나눠서 설명을 해야될 것 같습니다.

먼저 헤더파일에서 Person.h을 정의해보겠습니다.

#pragma once
class Person
{
private:
   static int num;
public:
   Person();
};

Person.cpp 파일에서도 구분하겠습니다.

#include "Person.h"

#include <iostream>

int Person::num = 0;

Person::person()
{
   num++;
}

voids Person::print()
{
   std::cout << num << std::endl;
}

main.cpp 파일에서는

#include <iostream>
#include <"Person.h"
using namespace std;

int main()
{
   Person p0;
   Person p1;
   
   p0.print();
   p1.print();
}

main에서 실행을 해주면

 

오늘 강의는 20분내의 짧은 강의였습니다.

개인적으로 좀 어려운 부분이라고 생각합니다.

복습이 필요할 것 같아서 체크에 두었습니다.

 

그럼 22회차 월요일 학습 기록을 마치겠습니다.

오늘도 공부하느라 고생하셨습니다.

 

내일 23회차로 다시 찾아뵙겠습니다.

이상입니다.

 

패스트캠퍼스 C++ 강의 링크를 걸어두겠습니다. 참고하세요~
올인원 패키지 : C++ 실력 완성 https://bit.ly/33beaFj

 

C++ 실력 완성 올인원 패키지 Online. | 패스트캠퍼스

선데이토즈, ICON Foundation 출신 Core 개발자가 직접 알려주는 C++의 모든 것. 애니팡 게임을 직접 만들어 보며 어려운 C++의 원리를 이해하고 실무에서 쓸 수 있는 수준까지 만들어 드립니다.

www.fastcampus.co.kr

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading