도슐랭스타
C++-구조체와 클래스 본문
#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의 접근 권한은 세가지가 있다.
- private : 해당 클래스 내부에서만 접근 가능, 디폴트 속성으로 생략이 가능하다.
- public : 어디에서나 접근 가능
- 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
반응형
'C++' 카테고리의 다른 글
C++ - const new (0) | 2023.11.08 |
---|---|
C++ - 객체와 멤버 생성자 소멸자 this (1) | 2023.11.01 |
C++ 맛보기와 C복습(4)-구조체, 객체지향 프로그래밍 (0) | 2023.10.11 |
C++ 맛보기와 C 복습(3)-함수, 구조체 (0) | 2023.09.27 |
C++맛보기와 C복습(2)-제어문 (0) | 2023.09.20 |
Comments