C++ 요약

낭만개발자·2020년 12월 15일
1
post-thumbnail

회사 프로젝트땜에 아두이노 c++ 를 간단하게 사용해야 해서.. java나 js python에 없는것들은 읽을수가 없다아아
전공자라면 c는 좀 하니까 잘보겠지만.. 비전공자의 비겁한 변명이긴 싫으니 공부하겠다아아

콜론 한개 (생성자, 상속)

상속

C++에서 클래스를 상속하는것은 아래와 같습니다. 그저 클래스를 상속시키려면 상속받을 클래스의 이름 옆에 :와 접근 제한자, 그리고 상속할 클래스의 이름을 붙여주면 됩니다.

class 클래스명 { 
  // .. 
} 
class 클래스명 : 접근제한자 클래스명 
{ 
  // .. 
} 
..

출처: https://blog.hexabrain.net/173 [끝나지 않는 프로그래밍 일기]

콜론 두개의 의미는?

class Person
{
public: 
  person() //선언부
}

//class  밖에서 선언부의 함수를 구현해주고 싶다 하면 ::오버라이딩하고 싶은 함수명() 
//이렇게 적어주면 됨
Person::Person() {
 1+2+3... //구현하시오
}

즉 c++은 특이하게 선언부는 클래스 내부에, 그리고 구현부는 :: 써가지고 클래스 바깥에 overriding 형태로 구현가능하다아
::은 java의 overriding개념으로 class 내부 멤버 함수 참조로 알면 될듯

A::B()
이면 A라는 클래스 안에 있는 B함수를 쓰겠다는 의미. 즉 위에는 선언 하는 방식이고 요거는 사용하는 방식이고.

참고
https://blog.naver.com/PostView.nhn?blogId=tipsware&logNo=221056673054

포인터

확실히 C안하니까 포인터 개념이 헷갈림.
포인터 : 즉 메모리의 특정 위치를 가리킴.

일단 변수의 메모리 주소를 구할때는 변수 앞에 &(주소연산자)를 붙이면 됨.
참고 변수 앞에 &붙이는걸 참조자라고 함.
ex) int 변수명 ; //이건 변수의 선언이잖아
int& 참조자명 = 변수명; //이건 참조자 선언 형식임.

포인터 변수에 대해 나옴:

C 언어 코딩 도장

포인터 선언할 때 자료형 뒤에 * (Asterisk)를 붙임.
(다른때가 아니라 선언할 때만 붙인다! 기억!, 할당 할땐 걍 변수명만 적어주면 됨)

포인터 선언 : int* * numPtr; // 자 numPtr이 포인터임!!
포인터 변수를 선언했으면 &로 변수 주소를 구해서 포인터 변수에 저장 // 요게 뭔말이냐면
numPtr = &num1; // num1의 메모리 주소를 구해가지고, (아까 numPtr이 포인터니까) numPtr 포인터 변수에 저장.
즉 포인터는 사실상 js에서 const value = data; 요거랑 같은거넹 요것도 data의 주소값을 얕은 복사로 value에 넘겨주는거니깐.

다시 정리하자면,
포인터 : 즉 메모리의 특정 위치를 가리킨다.

즉 *로 포인터로 정의된 것은, 뒤에 &기호로 정의된 변수의 주소를 받아(값을 받는게 아닌) 자기걸로 사용해버린다.

즉 앞에 말한 numPtr은 &num1의 주소를 받았기에 num1의 주소를 가져와 사용한다.
즉, numPtr =5 등 값을 바꿔버리면,(num1의 주소를 사용하므로) num1의 값이 5로 바뀐다.

c++ 에서 -> 요놈 화살표는 뭔가요??

답 : 포인터 변수의 값을 참조하기 위한 연산자.
예를 들면

struct A(
  char a[2];
  int b;
  ) 

라는 구조체가 있다면 struct A *B와 같이 포인터 변수 B를 선언했다.
그러면 a 값 가져오려면? java같은 경우는 A B = new A 방식으로 A 자료형에 대한 인스턴스 변수 B를 생성했다 치면 B.a로 a변수에 접근하겠지만,
c++은 B가 포인터니까,
B->a해야지만 a의 값을 가져올 수 있음.

B는 메모리 안에 address만 가지고 있음
B->b도 가능.
B.a는 안됨.
JAVA의 B.a와 같이 점 접근자 = 화살표 참조 연산자로 이해하면 됨.

참고

C++ 에서 화살표(->) 의미

profile
낭만닥터와 슬의를 보고 저런 개발자가 되어야 겠다고 꿈꿔봅니다.

0개의 댓글

관련 채용 정보