목록Develop Study/C++ (8)
Araina’s Blog
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
1. 하드웨어 친화적인 C++ C++는 하드웨어에 대한 직접적인 대응을 제공하는 언어입니다. 기본적인 연산자들은 하드웨어가 제공하는 기능으로 구현되어 있으며, 대부분 기계어 하나로 처리됩니다. 하드웨어가 제공하는 기능이나 기계어 하나로 처리된다는 부분에 대한 이론적인 개념은 컴퓨터 구조 또는 운영체제를 참고하면 됩니다. 만약, int x와 int y를 더하는 x + y 연산을 명령한다면 이는 머신 명령어(instruction) 하나로 처리됩니다. C++의 구현은 머신의 메모리를 일련의 메모리 위치라는 관점에서 바라보며, 그 메모리 위치에 객체를 저장, 포인터로 가리키는 형태로 동작합니다. 위 사진에서 p의 값은 현재 포인터로 가리키고 있는 3이 됩니다. v는 배열처럼 보이지만, 실제로는 C++가 메모리상..
1. auto 타입 C++ 에는 변수를 선언할 때, auto라는 타입을 사용할 수 있습니다. 변수를 선언할 때 초깃값으로부터 타입을 유추할 수 있을 경우, auto를 사용하면 알아서 타입이 변환되는 형식입니다. auto를 사용할 때는 문제를 야기하는 타입 변환의 위험이 없기 때문에 대입 연산자( = )를 사용할 수 있습니다. C++에서는 구체적인 타입을 직접 언급할 특별할 이유가 없다면 가급적 auto를 사용할 것을 권장하고 있습니다. 2. 구체적인 타입을 직접 언급할 '특별한 이유' - 정의가 속하는 스코프(scope)가 크고, 코드를 읽는 다른 사람들에게 타입을 명확하게 알리고 싶은 경우. - float 대신 double을 사용해 실수를 표현하는 것처럼 변수의 구간이나 정밀도를 명확하게 하고 싶은 경..