전체76 [열혈 C++] private 접근제어지시자의 정확한 범위 private private의 뜻은 클래스를 공부한 사람이라면 누구나 알고 있을 것입니다. private은 외부로부터의 접근을 제한한다는 뜻입니다. 그렇다면 접근자가 같은 클래스이지만 다른 객체라면 private 영역에 접근할 수 있을까요? 답은 '그렇다'입니다. 만약 private이 같은 클래스의 다른 객체에서의 접근까지 제한한다면 복사생성자나 연산자 오버로딩을 하지 못했을 것입니다. #define _CRT_SECURE_NO_WARNINGS #include using namespace std; class SimpleClass { private: int num; public: SimpleClass(const SimpleClass& copy) :num(copy.num) //같은 SimpleClass이지만 .. 2024. 2. 20. [백준] 15829번 Hashing - C++ Hashing 문제 APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정의한다. 해시 함수는 무궁무진한 응용 분야를 갖는데, 대표적으로 자료의 저장과 탐색에 쓰인다. 이 문제에서는 여러분이 앞으로 유용하게 쓸 수 있는 해시 함수를 하나 가르쳐주고자 한다. 먼저, 편의상 입력으로 들어오는 문자열에는 영문 소문자(a, b,..., z)로만 구성되어 있다고 가정하자. 영어에는 총 26개의 알파벳이 존재하므로 a에는 1, b에는 2, c에는 3,..., z에는 26으로 고유한 번호를 부여할 수 있다. 결과적으로 우리는 하나의 문자열을 수열로 변환할 수 있다. 예를 들어서 문자열.. 2024. 2. 14. [열혈 C++] 생성자와 소멸자 생성자 생성자란 반환값이 없고 클래스와 이름이 같은 멤버함수로 클래스 객체가 생성될 때 한 번만 호출되는 함수입니다. 생성자도 함수이므로 오버로딩이 가능하고 디폴트 값을 설정할 수 있습니다. 그럼 간단한 생성자 예제를 작성해 보겠습니다. #define _CRT_SECURE_NO_WARNINGS #include using namespace std; class A { private: int num1; public: A(int num) { //생성자 정의 num1 = num; } void ShowNum() { cout 2024. 2. 11. [열혈 C++] 정보 은닉과 캡슐화 정보 은닉 정보 은닉이란 코드(클래스)에서 외부에서 함부로 접근하였을 때 문제가 될 수 있는 데이터를 안쪽으로 숨겨서 코드의 안정성을 높이는 것을 말한다. 안쪽으로 숨긴다는 것은 private: 처리를 하여 클래스 내부에서만 접근할 수 있게 하는 것을 말한다. 정보은닉을 하게 되면, 외부에서의 접근을 제한할 뿐만 아니라 프로그래머의 실수로 인한 오류도 잡아내기 쉬워진다. #include using namespace std; class point { public: int xpos; //좌표의 범위는 0~100 int ypos; void PrintPos() { cout 2024. 2. 4. [열혈 C++] C++에서의 파일 분할 파일 분할 C++에서는 클래스별로 파일을 나눕니다. 각 클래스에서 헤더와 소스를 분리합니다. 헤더파일에는 클래스의 선언을, 소스파일에는 클래스의 정의(멤버함수의 정의)를 담습니다. 하지만 멤버함수를 인라인 처리할 경우 인라인 된 함수는 헤더파일에 넣어야 합니다. 헤더파일 : 클래스의 선언, 인라인 함수 소스파일 : 멤버함수의 정의를 포함한 클래스의 정의 #ifndef, #define, #endif 헤더파일을 디자인할 때는 헤더파일의 중복을 막기 위해 #ifndef, #define, #endif를 사용합니다. ifndef : 만약 정의되지 않았다면 #endif까지 유효한 코드로 만든다. define : 정의 한다. endif : #ifndef의 끝을 나타낸다. #ifndef HEAD #define HEAD.. 2024. 2. 4. [열혈 C++] 구조체와 클래스 C++에서의 구조체 정의 방법 C++에서는 typedef 선언의 필요 없이 간단하게 구조체를 정의하고 선언할 수 있습니다. Car라는 구조체를 정의하기 위해서 struct Car { 데이터 }; 의 형태로 정의를 하고 선언할 때 struct 없이 Car car; 형태로 선언하면 됩니다. 또한 C++에서는 구조체 관련 함수를 구조체 안에 삽입할 수 있습니다. 구조체 안에 함수를 삽입하게 되면 함수가 무엇과 관련한 함수인지 파악하기 용이하고 구조체 안에 들어간 함수는 자동으로 inline처리가 됩니다. 간단한 예제를 작성해 보겠습니다. #include using namespace std; struct Car { int carspeed; void Accel() { carspeed += 10; cout 2024. 2. 4. 이전 1 ··· 6 7 8 9 10 11 12 13 다음