목록Dev. Study Note/C++ (10)
Priv's Blog
1. 함수C++에도 코드 재활용 수준과 가독성을 높여주는 함수가 존재합니다.함수는 데이터를 입력받으면 이를 활용해 특정한 기능을 수행한 뒤, 적절하게 가공된 출력을 하는 역할을 수행합니다.여기서 데이터의 입력은 '매개변수', 데이터의 출력은 '반환 값'이라는 용어로 칭합니다.매개변수와 반환 값은 존재하지 않을 수도 있으며, 그 종류와 개수도 무궁무진합니다.반복적으로 사용되는 코드의 일부분을 함수로 처리하면 동일한 기능을 수행해야 할 때 그 함수를 '호출'하면 되므로, 코드의 가독성과 재활용성을 높여줄 수 있습니다.함수의 이름이 곧 함수이 기능을 의미합니다.이 때문에 함수를 호출하는 것만으로도 그 함수의 실제 내용물을 모르더라도 어떠한 기능이 수행될 것인지를 쉽게 파악할 수 있습니다.이러한 점 덕분에 OO..
1. C++의 배열이제 C++ 내부에서 배열을 어떻게 다루는지 알아보겠습니다.정수형 변수에 1이라는 값을 더하면, 변수의 값이 1만큼 올라갑니다.하지만 포인터 변수는 다르죠.포인터 변수에 1이라는 값을 더하면 메모리 주소가 달라집니다.만약 포인터 변수의 타입이 double이라면, double은 8byte 크기이므로, 값이 더해졌을 때 8byte만큼 올라갈 것입니다.#include using namespace std;int main() { double* dp = new double; cout 그렇다면 C++에서 포인터가 배열을 가리킨다면 어디를 가리킬까요?위와 같이 단순히 하나의 값만 다루는 변수라면 문제가 없지만, 다들 아시다시피 배열을 여러 개의 값을 연속적으로 저장해 다루는 방식의 자료구조..
1. 메모리 주소포인터 변수는 일반적으로 데이터를 저장하는 것 대신, 메모리의 주소를 저장하는 변수라고 알려져 있습니다.메모리 주소는 말 그대로 데이터가 메모리 상에서 어디에 저장되어 있는지에 대한 주소로, 데이터 그 자체가 아닌 데이터의 위치를 의미합니다.C++에서 이 메모리 주소를 변수에 담기 위해서는 포인터 변수를 정의해 사용해야 하며, 포인터 변수는 메모리 주소만 저장할 수 있습니다. 2. & 연산자와 * 연산자포인터 변수는 값이 아닌 값의 주소를 저장합니다.포인터 변수를 선언하기 위해서는 * 연산자를, 포인터 변수에 저장할 데이터의 주소를 나타내기 위해서는 & 연산자가 사용됩니다.& 연산자는 해당 값의 메모리 주소를 가져오는 역할을 합니다.#include using namespace std;i..
1. C++의 상속 C++는 OOP 언어의 핵심 중 하나인 '상속' 기능을 지원합니다. C++은 다중 상속을 지원하며, 상속 시 접근 제한자를 이용해 여러 타입의 상속을 구현하는 것도 가능합니다. class Mother { public: Mother() { }; void sayHi() { cout
1. 헷갈린다. 사진으로 깔끔하게 정리한 자료가 있어서 올려둔다. 헷갈려... 수고하셨습니다!
1. friend 키워드 friend 키워드는 수평적인 관계에 위치한 클래스 간의 멤버 변수를 공유하기 위해 주로 사용되는 키워드입니다. 타 클래스 내부에 접근하여 제한적으로 필요한 멤버 변수를 불러오는 기능을 하며, 확장성을 키울 수 있다는 장점이 있지만 캡슐화를 무시하므로 스파게티 코드가 만들어질 위험성이 따라옵니다. #include using namespace std; class People { private: string name; int age; public: string getName(); int getAge(); void setName(string name); void setAge(int age); string editInfo(string name, int age); void sayAge(P..
1. 클래스 데이터와 연산을 분리하면 데이터를 다양한 방식으로 활용할 수 있다는 장점이 있습니다. 클래스는 사용자가 메모리 표현에 접근하지 못하게 하여 타입을 더 쉽게 사용하고, 데이터를 일관되게 사용하여 메모리 표현을 보다 쉽게 개선하기 위해 활용됩니다. 이를 위해서는 모두가 접근해 사용할 수 있는 타입의 인터페이스와 외부에서는 접근할 수 없도록 제한하는 타입의 구현을 분리해야 하는데, 여기서 클래스가 등장합니다. 클래스는 일련의 멤버를 포함하며, 데이터나 함수, 타입을 멤버로 가질 수 있습니다. 인터페이스는 외부에서의 접근을 허용하므로 public으로 정의되며, private 멤버는 인터페이스를 통해서만 접근이 가능합니다. class Vector { public: Vector(int s) : elem..
1. 함수의 반환 값과 구조화된 바인딩 함수는 값을 반환할 수 있으나, 무조건 1개의 값만 반환할 수 있습니다. 하지만 함수의 반환값은 많음 멤버를 포함하는 객체 1개일 수도 있습니다. Python에서 다루는 튜플(Tuple)처럼 여러 값을 묶어 하나의 객체로 다루는 기능을 C++에서도 제공합니다. #include using namespace std; struct Entry { string name; int value; }; Entry read_entry(istream& is) { string s; int i; is >> s >> i; return {s, i}; } int main() { cout