Notice
Recent Posts
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
관리 메뉴

도슐랭스타

C++-구조체와 클래스 본문

C++

C++-구조체와 클래스

도도.__. 2023. 10. 18. 12:47
#include <iostream>
struct Man {
    int age;
    double weight;
};
int main()
{
    Man dodo;
    dodo.age = 10;
    dodo.weight = 20.5;

    std::cout << dodo.age << " " << dodo.weight << std::endl;
}

struct는 기본이 public이고 class는 기본이 private이다.

class명은 Integer이고 객체명은 Val1과 Val2이다. 요즘은 Val1 처럼 쓰지는 않는다.

class의 접근 권한은 세가지가 있다.

  1. private : 해당 클래스 내부에서만 접근 가능, 디폴트 속성으로 생략이 가능하다.
  2. public : 어디에서나 접근 가능
  3. protected : private이지만 자식에게는 접근 가능

표시해둔 것들은 기본 접근 속성이라 생략이 가능하다.

#include <iostream>
class Man {
private: //캡슐화한 것.(감춤)
    int age;
    double weight;
public:
    int getAge() { //출력함수
        return age;
    }
    void setAge(int a) { //입력함수
        age = a;
    }
    double getWeight() { //출력함수
        return weight;
    }
    void setWeight(double w) { //입력함수
        weight = w;
    }
};
int main()
{
    Man dodo;
    dodo.setAge(100);
    dodo.setWeight(20.5);
    std::cout << dodo.getAge() << std::endl;
    std::cout << dodo.getWeight() << std::endl;
}

오른쪽 박스가 class 다이어그램이다. -는 private이고 +는 public이다.

함수 정의는 함수를 만드는 것이고 함수 선언은 맨 위에 적어서 컴파일러에게 함수에 대한 정보를 미리 주는 것이다.

#include <iostream>
class Man {
private: //캡슐화한 것.(감춤)
    int age;
    double weight;
public:
    int getAge() { //출력함수
        return age;
    }
    void setAge(int a) { //입력함수
        age = a;
    }
    double getWeight() { //출력함수
        return weight;
    }
    void setWeight(double w) { //입력함수
        weight = w;
    }
};

이랬던 코드의 public 함수를 class 밖으로 빼내서 함수의 정의를 할 수 있다.

#include <iostream>
class Man {
private: //캡슐화한 것.(감춤)
    int age;
    double weight;
public:
    int getAge();
    void setAge(int a);
    double getWeight();
    void setWeight(double w);
};
int Man::getAge() {
    return age;
}
void Man::setAge(int a) {
    age = a;
}
double Man::getWeight() {
    return weight;
}
void Man::setWeight(double w) {
    weight = w;
}

우리가 전에 함수를 선언, 정의 하듯이 class 함수를 선언, 정의할 수 있다.

범위 지정 연산자(scope resolution operator, "::")

  • 멤버 함수가 어느 class에 포함되어 있는지 나타낼 때 사용한다.
  • 함수 안에서 전역변수를 접근할 때 사용한다.
#include <iostream>
int main()
{
    std::cout <<"Hello World!"<<std::endl;
    return 0;
}

여기서 사용하는 "::"도 범위 지정 연산자이다.

#include <iostream>
using namespace std;
int main()
{
	cout<<"Hello World!"<<endl;
	return 0;
}

이렇게 쓸 수도 있지만 std만 사용하는 경우가 아닐 때도 있기에 잘 사용하지 않는다.

#include <iostream>
using std::cout;
using std::endl;
int main()
{
	cout<<"Hello World!"<<endl;
	return 0;
}

std::를 쓰는 것이 귀찮다면 위 코드가 더 좋은 방법이다.

class 내부에 멤버 함수를 정의하면 자동으로 inline 함수가 된다.

출처:https://www.youtube.com/@smilehan8416

 

Smile Han

 

www.youtube.com

 

반응형
Comments