본문 바로가기
프로그래밍 C++

[C++] 24-08-28 공부 정리

by st-og 2024. 8. 28.

클래스 default 생성자

  • 클래스를 생성자에 default를 사용하면 멤버 변수의 값들은 초기화 됨

ex)

class Tmp{
	public:
		Tmp() = default;
}

클래스 생성자 초기화 리스트

  • 클래스의 멤버 변수의 값을 생성자의 초기화 리스트를 통해 원하는 값으로 초기화 가능

ex)

class Tmp{
	public:
		Tmp(): num1(10), num2(20), name("이름") {}
	
	private:
		int num1;
		int num2;
		std::string name;
}

클래스 소멸자

  • 클래스 객체가 삭제될 때 이뤄지는 작업을 정의할 수 있음

ex)

class Tmp{
	public:
		Tmp() = {//생성될 때 이뤄지는 작업} //생성자
		~Tmp() = {//소멸될 때 이뤄지는 작업} //소멸자
}

동적 메모리 할당

  • new와 delete를 사용해 동적 메모리를 할당하고 해제할 수 있음
    • new로 할당되는 값은 heap 영역에 저장되기에 *을 사용해서 값을 참조할 수 있음
    • *로 참조한 클래스의 함수를 사용할 때는 →를 사용

ex)

class Info{
    public:
        Info(){
            data = new int;
            data_arr = new int[3];
        }

        void Dispose(){
            delete data;
            delete[] data_arr;
        }

    private:
        int* data;
        int *data_arr;

};

int main(){
    Info *info = new Info();

    info->Dispose();
    delete info;

    return 0;
}

static 클래스

  • 어느 클래스에서나 인스턴스 없이 사용 가능
  • 유틸리티 함수에 유용

캡슐화

  • 용도가 비슷한 데이터들을 모아 코드 재활용성과 정보 은닉
  • Setter, Getter 를 통해 멤버 변수에 접근

ex)

class KingInfo{
    public:
        KingInfo() { };
    
    public:
        void SetValue(const std::string name, const std::string son){
            name_=name;
            son_=son;
        }

        std::string GetNameSon() const {
            return name_ + "의 아들 " + son_;
        }

    private:
        std::string name_;
        std::string son_;
        
};

int main(){
    KingInfo king_info;
    king_info.SetValue("name","son");
    
    std::cout << king_info.GetNameSon() << std::endl;

    return 0;
}

객체지향 상속

  • 다른 클래스의 정보를 가져와 사용한다
  • 코드 재사용을 줄이고 유지 보수에 용이함

ex)

class Info{
    public:
        std::string name_;
        int year_;

};

class GoodKing : public Info {
    public:
        GoodKing(const std::string country) : country_(country) {};
        void Display(){
            std::cout << country_ << " " << name_ << "연도 : " << year_ << std::endl; 
        }

    private:
        std::string country_;

};

//Info의 구조를 public으로 GoodKing에서 상속 받아서 사용

'프로그래밍 C++' 카테고리의 다른 글

[c++] 24-08-30 공부 정리  (0) 2024.08.30
[c++] 24-08-29 공부 정리  (0) 2024.08.29