일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- getline
- EOF
- 장고란
- 표준 입출력
- k-eta
- 연결요소
- 입출력 패턴
- 시간복잡도
- double ended queue
- c++
- string 함수
- Django란
- iOS14
- 엑셀
- 백준
- 구조체와 클래스의 공통점 및 차이점
- scanf
- correlation coefficient
- 자료구조
- 알고리즘 공부방법
- 이분그래프
- Django Nodejs 차이점
- vscode
- 매크로
- UI한글변경
- 2557
- Django의 편의성
- 프레임워크와 라이브러리의 차이
- 입/출력
- string 메소드
Archives
- Today
- Total
Storage Gonie
(8) C++ 구조체 사용방법(구조체, 클래스 차이점) 본문
반응형
# 구조체 정의 방법
- 구식 컴파일러 버전에서는 'struct' 앞에 'typedef'를 넣어줘야 한다.(신형의 경우 생략가능)
- 구식 컴파일러 버전에서는 구조체 멤버변수를 선언할 때 초기화해줘야 한다.(신형의 경우 상관없음)
struct Point2D{
int x;
int y;
};
struct Point2D{
int x;
int y;
void init(int x, int y)
{
this->x = x;
this->y = y;
}
void printPoint2D()
{
cout << "(" << x << ", " << y << ")" << endl;
}
};
# 구조체를 이용한 객체 생성방법
struct Point2D
{
int x;
int y;
};
int main(void)
{
// 첫 번째 방법 : 선언과 동시에 멤버변수 초기화
Point2D p1 = {1, 0};
p3.printPoint2D(); // (1, 0)
// 두 번째 방법 : 선언 후 멤버변수 초기화
Point2D p2;
p2.x = 4;
p2.y = 5;
p2.printPoint2D(); // (4, 5)
// 세 번째 방법 : 선언 후 멤버변수 초기화
Point2D p3;
p3.init(3,5);
p3.printPoint2D(); // (3, 5)
}
# 구조체 배열 사용방법
struct Point2D
{
int x;
int y;
};
int main(void)
{
Point2D p[5];
// 각각의 변수에는 아래와 같이 접근가능
for (int i = 0; i < 5; i++)
{
p[i].x = i;
p[i].y = i;
}
}
# 구조체와 클래스의 공통점 및 차이점
@ 공통점
- 둘 다 변수, 메소드를 하나로 묶는 방법으로 아래의 차이점을 제외하고는 같다.
- 둘 다 변수, 함수, 생성자, 소멸자를 내부에서 선언할 수 있고, 상속구조를 사용할 수 있다.
- '접근제어 지시자(pubic, protected, private)' 가 존재하며, 구조체, 클래스 모두 접근제어 지시자를 사용할 수 있다.
@ 차이점
- 구조체의 경우 접근제어 지시자를 따로 명시하지 않는다면 모든 변수와 함수는 public으로 선언된다.
- 클래스의 경우 접근제어 지시자를 따로 명시하지 않는다면 모든 변수와 함수는 private으로 선언된다.
- 일반적인 경우 각각은 아래와 같은 형태로 코딩한다.
- 구조체는 멤버변수, 멤버함수 모두 public으로 선언하여 구조체 외부에서 멤버변수를 쉽게 수정할 수 있게 하는 반면
- 클래스는 멤버변수를 priavate로, 멤버함수는 public으로 선언하여 멤버함수를 통해서만 멤버변수를 수정할 수 있게 설계한다.
반응형
'알고리즘 > 문제해결을 위한 C++ 공부' 카테고리의 다른 글
(10) C++ algorithm헤더의 find 함수 (0) | 2019.04.25 |
---|---|
(9) C++ algorithm헤더의 count 함수 (0) | 2019.04.25 |
(7) C++을 사용하여 문제 해결시 주의할 점 (0) | 2019.04.20 |
(6) C++ char 형 사용법 한번에 끝내기 (1) | 2019.04.20 |
(5) C++ string 클래스 사용법 한번에 끝내기 (4) | 2019.04.19 |
Comments