C ++ 참조자의 도입
#include <iostream>
int main() {
int a = 3;
int& another_a = a;
another_a = 5;
std::cout << "a : " << a << std::endl;
std::cout << "another_a : " << another_a << std::endl;
return 0;
}
C ++ 에서는 다른 변수나 상수를 가리키는 방법으로 포인터와는 다른 새로운 방식을 제공하는데 이를 참조자라고 한다.
레퍼런스는 정의 시에 초기화가 되어야 한다. 즉, 반드시 선언할 때 누구의 별명인지 명시를 해야 한다.
레퍼런스가 한 변수의 참조자가 된다면, 더 이상 다른 변수를 참조할 수 없다.
함수 인자로 레퍼런스를 받아서 함수 내에서 레퍼런스의 값을 바꿀 수 있겠다.
레퍼런스를 리턴하는 함수
C++ 의 세계로 오신 것을 환영합니다. (new, delete)
new 와 delete 는 C 에서의 malloc 과 free 에 상응한다.
new delete 를 사용한 메모리 관리는 heap 이라는 공간에서 이루어지며 다른 공간에 저장되는 지역 변수들과는 구별된다. 그러므로, new 로 heap 상에 지정된 것이 아닌 것을 delete 하려고 한다면 에러가 발생할 것이다.
이 세상은 객체로 이루어져 있다.
#include <iostream>
class Animal {
private:
int food;
int weight;
public:
void set_animal(int _food, int _weight) {
food = _food;
weight = _weight;
}
void increase_food(int inc) {
food += inc;
weight += (inc / 3);
}
void view_stat() {
std::cout << "이 동물의 food : " << food << std::endl;
std::cout << "이 동물의 weight : " << weight << std::endl;
}
}; // 세미콜론 잊지 말자!
int main() {
Animal animal;
animal.set_animal(100, 50);
animal.increase_food(30);
animal.view_stat();
return 0;
}
변수는 private 으로 설정하여 응용 개발자가 직접적으로 접근할 수 없게 한다. (private 을 명시해주지 않아도 자동적으로 private 으로 설정되긴 한다.)
class 내부에서는 private 또한 자유롭게 접근 가능하다.
그러한 변수를 의도대로 조정할 수 있기 위해 인스턴스 메소드를 public 으로 설정한다. public 은 명시해주어야 설정되므로 멤버 함수는 public 으로 설정하는 것이 맞을 것이다.
반응형
'etc > C++' 카테고리의 다른 글
[TIL] STL - 벡터(vector), 리스트(list), 데크(deque) (0) | 2021.05.22 |
---|---|
[TIL] 생성자 초기화 리스트 / const, static / 난수 생성 / 레퍼런스를 리턴하는 함수 / this / const 함수 (0) | 2021.05.20 |
[TIL] 함수의 오버로딩 / 생성자 (0) | 2021.05.15 |