• 분류 전체보기
    • 갈무리
    • 씨플플
    • SPRING
    • PI
    • ALGORITHM
    • DIARY
    • (∗❛ᴗ❛∗)
    • (●'◡'●)
    • 민디의 취준일기 (202301~)
  1. [C++] 전위 후위 증감연산자 오버로딩 2021.01.14
  2. [C++] 정적바인딩과 동적바인딩 2021.01.11
  3. [C++] template 배열을 참조로 전달 (배열 참조) 2021.01.09
  4. [C++] 클래스, 생성자, 소멸자, this, struct 2021.01.07
[C++] 객체지향 vs 절차지향 #씨플플
2021. 1. 7.

20.01.07 목요일 C++ 강의정리

 

'C++의 객체지향은 무엇을 위한 것인가??' 라는 대학교 4년동안의 질문을 잘 해결해준 답변이라 정리해봄

 

객체지향과 절차지향이 분리가 잘되는건 아님

객체지향도 절차지향적으로 코드를 작성하지만 절차를 기술할 때 객체를 중심으로 코드를 작성하는 것

 

C스타일의 코드는 내부적으로 어떻게 구현이 되어있는지 다 보임

예를들면 배열의 크기를 어느정도로 설정했는지 같은

 

char s2[100] = "hello";
char s3[] = "world";

s2의 길이를 100으로 정했지만

만약 이보다 더 긴 문자열이 들어왔을 경우 발생하는 문제를 계속 생각해야하고

문자열 길이 바꿀 때마다 배열 크기 계속 생각해줘야함 > 귀찮음

 

 

C++ 의 string 은 

string s0 = "hello";
string s1 = "world";

 

string 클래스 내부에서 배열의 크기 라던지 그런 걸 다 알아서 정해지기 때문에 신경쓰지 않아도됨

물론 string 내부적으로 char 배열을 할당해서 사용하겠지만

사용자는 char 배열에 얼마가 할당됐고 이런 사실들을 모름 > 정보의 은닉성, 캡슐화

 

 

문자열을 합치는 경우를 생각해보자

strcat은 문자열을 합치는 함수

char s2[100] = "hello";
char s3[] = "world";

strcat(s2, s3);

 

 

 

string s0 = "hello";
string s1 = "world";

s0.append(s1);

 

strcat 보다 더 한눈에 들어옴

C++을 모르지 않아도 append 라는 단어만 보면 s0과 s1을 합치는거구나 라고 알수있음

 

이렇게 코드를 깔끔하게 만들고 가독성을 높일 수 있음

 

append 함수 사용하는 사용자에게 중요한 건 s0가 s1에 붙는다는 게 중요한거지 배열사이즈까지 알아야할 필요없잖아

이럴 때는 exception이 발생할 수 있으니 조심하고 문자열 길이 길어지면 배열 크기 다시 조정해야한다 같은 사소한 게 아니라는것

 

 

티스토리툴바