안녕하세요. 파피몬입니다.
이 복습 내용은 최호성 선생님의 "이것이 C++이다"를 공부하고 작성하였습니다.
아직 모르는 게 많은 학생이라 오개념이 있을 수 있습니다. 친절하게 댓글로 알려주시면 좋은 공부 될 것 같습니다!!
Chapter 1. C와는 다른 C++
1. C언어는 순서가 중요한, 규모가 작은 프로젝트에 적합한 절차지향 프로그래밍이고,
C++은 Class(C언어의 구조체와 함수를 합쳐놓은 느낌)를 연결하는 것이 중요한, 대규모 프로젝트에 적합한 객체지향 프로그래밍이다.
2. C언어는 비용도 적게들고, 성능도 좋다. 하지만 유지/보수 측면에서는 C++이 더 우세하다.
3. C언어는 사용자(개발자)가 사용방식을 하나하나 다 알아야합니다.
반면 C++는 방식보다는 접근과 전달 자체에 더 집중합니다.
//C언어... Hello World 세탁위해 직접 세탁기를 돌린다
//printf() 함수의 사용방법? 형식문자? 이스케이프 시퀀스? 보안문제?
printf("Hello World\n");
//C++... std::cout 세탁소에 "Hello World"와 std::endl을 넘겨준다
//"std에 속한 cout객체에 "Hello, World" 문자열과 endl 객체를 '넘겨(<<)' 문자열을 출력해라!"
std::cout<<"Hello World"<<std::endl;
4. 인스턴스란 객체의 형식을 갖는 변수! C++에서는 '변수' 보다는 '인스턴스'에 더 익숙해 질 것!
//nData는 int형식에 대한 '인스턴스'다
int nData;
5. std::cout, std::cin에서는 C언어의 형식 문자 (%d, &s)등이 필요없다!
std::cout ... 조립(<<)해서 붙여나가듯 출력 가능
std::cin ... C언어와 달리 string객체를 사용한다면 문자열의 최대 길이 고려할 필요X
6. auto는 초깃값의 형식에 맞춰 선언하는 인스턴스의 형식이 '자동'으로 결정된다!
void TestFunc( int , char* )
{ //머리 아팠던 함수 포인터 }
int main()
{
//auto로 void(*pfTest)(int,char*) = TestFunc 한방에 해결!
auto pfTest(TestFunc);
}
7. 함수 malloc(), free()에서 연산자 new, delete로의 진화!
기술의 발전에 따라 메모리를 할당할 때 없어서 할당 못해주는 시대는 지났다! 그래서 new등장!
메모리의 크기를 따로 정하지 않고, 자료의 '형식'에서 필요한 메모리 크기 catch!
using namespace std;
int main()
{
//heap영역에서 4byte만큼 할당, pData에 그 주소값 입력해준다.
int *pData = new int;
//heap영역에서 4byte만큼 할당, 거기에는 10이 입력되어있다.
//pNewData에 그 영역의 주소값 입력해준다.
int *pNewData = new int(10);
*pData = 5;
cout<<*pData<<endl;
cout<<*pNewData<<endl;
delete pData;
delete pNewData;
}
---------------
5
10
배열을 동적 생성하고 삭제할 때는 반드시 배열형태를 통해 삭제한다!
int *arr = new int[5]
delete [] arr;
8. 참조자 형식은 변수에 또 다른 별명을 부여하는 것! 같은 주소에 두가지 이름이 주어지는 느낌!
어찌보면 변하지 않는 포인터와 유사하다고 할 수 있다!
//nData와 rData는 같은 값과 같은 주소를 공유한다
int nData(10);
int &rData = nData;
9. 범위 기반 for문을 사용하면 배열의 요소 갯수에 맞게 자동으로 loop 횟수 결정!
배열의 크기가 변경되거나, 실수를 범했을 때 번거로움을 줄여줄 수 있다!
int aList[5] = {1,2,3,4,5};
for(int i=0; i<5; i++)
cout<<aList[i]<<' ';
//각 요소에 접근하고 싶다면 auto &n : aList 같이 참조자 형식으로 선언!
for(auto n : aList)
cout<< n <<' ';
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 4단원 복습! (2편) (0) | 2020.03.15 |
---|---|
C++ 4단원 복습! (1편) (0) | 2020.03.14 |
C++ 3단원 복습! (2편) (0) | 2020.03.12 |
C++ 3단원 복습! (1편) (0) | 2020.03.12 |
C++ 2단원 복습! (0) | 2020.03.11 |
댓글