C++에서 friend 키워드의 진화: 언어 설계의 정교한 도구로 자리매김
friend는 단순한 문법 요소를 넘어섰다
이제 friend는 C++ 언어 내에서 단지 "private 멤버에 접근하게 해주는 키워드"를 넘어서, 고도로 제어된 신뢰 관계 설정 수단으로 자리 잡고 있다. 시간이 지날수록 그 사용은 더 엄격히 규정되고, 오히려 필요성이 커졌다.
C++98: 기본적인 접근 권한 부여
초기 C++에서는 friend가 매우 단순했다. 클래스 외부의 함수나 클래스에 ...
7월 29일 02:54에 게시됨
CV에 혜택이! YTU 그리디 훈련 2(부분 주석)
경고: J 문제는 40분 동안 오류를 찾지 못해 시간 초과 발생(dp>검색)
간단한 문제 풀이(첫 번째 문제는 쉽게 해결됨)
1743 문제 A
#include<bits/stdc++.h>
using namespace std;
const int MAX_SIZE = 100010;
int n, k, sortedData[MAX_SIZE], accumulatedSum[MAX_SIZE], result, index1, index2, total;
int main() {
cin >> n >> k;
for(int i= ...
7월 28일 23:16에 게시됨
Unreal Engine RPG: GameplayAbility 기반 클래스 구현
이 튜토리얼에서는 Unreal Engine의 GameplayAbility 시스템을 확장하여 RPG 게임 개발에 사용할 수 있는 기본 GameplayAbility 클래스를 생성하는 방법을 알아봅니다.
1. UMyGameplayAbility 클래스 생성
모든 사용자 정의 스킬의 기반이 될 UMyGameplayAbility 클래스를 만듭니다. 이 클래스는 UGameplayAbility를 상속받습니다.
2. UMyGameplayAbility 코드 작성
MyG ...
7월 28일 14:18에 게시됨
QComboBox 확장하여 우측 삭제 버튼 기능 구현
기존 QComboBox의 한계와 개선 방향
Qt에서 QComboBox는 사용자에게 미리 정의된 항목 중 하나를 선택하게 하는 핵심 위젯 중 하나다. 기본적으로 선택 항목을 표시하고, 클릭 시 드롭다운 리스트를 보여주는 기능을 제공하지만, UI/UX 측면에서 더 직관적인 조작을 원할 경우 확장이 필요하다. 특히 웹 인터페이스에서 흔히 볼 수 있는 'X' 버튼 클릭으로 선택 해제 기능 ...
7월 28일 13:43에 게시됨
Google Test(GTest) 활용 가이드: 설치부터 테스트 작성까지
Google Test(GTest) 설치
Google Test(GTest)는 C++ 개발을 위한 강력한 단위 테스트 프레임워크입니다. GTest를 시스템에 설치하는 과정은 다음과 같습니다.
1. 소스 코드 확보
GTest의 최신 버전 소스 코드를 GitHub에서 클론합니다. 일반적으로 특정 릴리스 버전을 사용하는 것이 안정적입니다. 예를 들어, 1.11.0 릴리스 버전을 사용합니다.
git clone https: ...
7월 28일 10:30에 게시됨
C++ 연산자 오버로딩 환경에서 객체의 실제 주소를 추출하는 방법
문제 정의: 주소 연산자(&)의 오버로딩
C++에서는 주소 연산자(operator&)를 사용자 정의 클래스 내에서 오버로딩할 수 있습니다. 이러한 경우, 일반적인 &object 구문을 사용하면 설계자가 의도한 특정 값이나 프록시 객체가 반환될 뿐, 실제 메모리상의 객체 시작 주소를 얻을 수 없는 문제가 발생합니다.
class Trap {
public:
// 실제 주소가 아닌 가 ...
7월 28일 00:31에 게시됨
C++ 프로그램 실행 효율 극대화 기법
C++에서 변수를 선언하면 해당 변수의 생성자가 호출되며, 변수의 스코프를 벗어날 때 소멸자가 호출됩니다. 복잡한 객체의 경우 이러한 생성 및 소멸 과정은 상당한 오버헤드를 유발할 수 있습니다. 따라서 불필요한 변수 선언을 최소화하는 것이 중요합니다. 아래 코드를 살펴보겠습니다.
#include <string>
std::string prepareGreeting(const std::string& ...
7월 27일 20:53에 게시됨
Qt 프레임리스 창 구현: 드래그 및 리사이즈 기능 만들기
Qt 프레임리스 창 구현 개요
Qt GUI 애플리케이션에서 프레임리스 창을 구현하고 사용자가 창을 자유롭게 이동하고 크기 조절할 수 있게 만드는 것은 일반적인 요구사항입니다. 이 글에서는 Qt의 setWindowFlags() 함수를 사용하여 창 테두리를 제거하고, 마우스 이벤트를 처리하여 사용자 정의 드래그 기능을 구현하는 방법을 설명합니다. 또한 이벤트 필터를 활용하여 ...
7월 27일 20:42에 게시됨
Codeforces Round 920 (Div. 3) 효율적인 문제 해결 접근법
Problem A: Square
이 문제는 2차원 평면 위에 놓인 정사각형의 네 꼭짓점 좌표가 주어졌을 때, 해당 정사각형의 넓이를 구하는 문제입니다. 정사각형의 변은 항상 x축 또는 y축에 평행하다는 조건이 있습니다.
네 점의 좌표 중에서 x좌표가 같은 두 점을 찾으면, 그 두 점의 y좌표 차이의 절댓값이 바로 한 변의 길이(a)가 됩니다. 따라서 넓이는 a의 제곱으로 계산할 수 ...
7월 27일 18:21에 게시됨
C++ 템플릿 심화 분석
1. 비타입 템플릿 매개변수
템플릿 매개변수는 크게 두 가지로 구분됩니다. class나 typename 키워드 뒤에 오는 타입 매개변수와, 컴파일 타임 상수를 받는 비타입 매개변수입니다.
비타입 매개변수는 템플릿 내부에서 상수처럼 활용됩니다. 고정 크기 컨테이너를 구현할 때 유용하게 쓰입니다.
namespace util {
template<typename ElemType, std::size_t Capacity ...
7월 27일 09:35에 게시됨