--- id: cpp-class-methods title: "C++ Class Methods" category: "Programming_Language" status: "draft" verification_status: "conceptual" canonical_id: "" aliases: ["scope resolution operator", "define method outside class", "C++ 클래스 메서드"] duplicate_of: "" source_trust_level: "B" confidence_score: 0.86 created_at: 2026-07-04 updated_at: 2026-07-04 review_reason: "" merge_history: [] tags: ["cpp", "programming-language", "w3schools", "oop", "methods"] raw_sources: ["https://www.w3schools.com/cpp/cpp_class_methods.asp"] applied_in: [] github_commit: "" --- # [[CPP Class Methods]] ## 🎯 한 줄 통찰 (One-line insight) The scope resolution operator (`ClassName::methodName`) lets a method's DECLARATION live inside the class while its DEFINITION lives entirely outside it — recommended explicitly "especially in large programs" — mirroring the exact same declaration/definition-split rationale from the earlier plain-Functions chapter, but requiring this specific `::` syntax to reconnect the standalone definition back to its owning class. [S1] ## 🧠 핵심 개념 (Core concepts) - **Method** — a function belonging to a class; accessed via dot syntax on an object, same as attributes. [S1] - **Defining inside the class** — the method's full body is written directly within the class definition. [S1] - **Defining outside the class** — the class only DECLARES the method's signature; the actual body is written later using `ClassName::methodName() { ... }`. [S1] - **Scope resolution operator (`::`)** — connects a method definition written outside the class back to its class. [S1] - **Methods with parameters** — work exactly like regular function parameters. [S1] ## 📖 세부 내용 (Details) - Method defined inline: `class MyClass { public: void myMethod() { cout << "Hello World!"; } };`. [S1] - Method declared in the class, defined outside via `::`: `class MyClass { public: void myMethod(); }; void MyClass::myMethod() { cout << "Hello World!"; }`. [S1] - A parameterized method: `class Car { public: int speed(int maxSpeed); }; int Car::speed(int maxSpeed) { return maxSpeed; } Car myObj; cout << myObj.speed(200);`. [S1] ## ⚖️ 모순 및 업데이트 (Contradictions & updates) - **:: 연산자가 클래스 외부 정의를 다시 연결함**: 큰 프로그램에서는 메서드를 클래스 안에서는 선언만 하고 실제 본문은 밖에서 ClassName::methodName() 형태로 정의하는 것이 권장되며, 이 :: (범위 결정 연산자)가 정의를 소속 클래스와 다시 연결한다는 점이 확인됨. [S1] ## 🛠️ 적용 사례 (Applied in summary) Car 클래스의 speed() 메서드가 매개변수(maxSpeed)를 받아 그대로 반환하는 예제가 클래스 메서드의 매개변수 활용 실전 사례로 제시됨. [S1] ## 💻 코드 패턴 (Code patterns) Declaring a method inside the class, defining it outside using the scope resolution operator (C++): ```cpp class Car { public: int speed(int maxSpeed); // declaration }; int Car::speed(int maxSpeed) { // definition, outside the class return maxSpeed; } int main() { Car myObj; cout << myObj.speed(200); return 0; } ``` ## ✅ 검증 상태 및 신뢰도 - **상태:** draft - **검증 단계:** conceptual - **출처 신뢰도:** B (W3Schools — widely used educational reference, not a primary standards body) - **신뢰 점수:** 0.86 - **중복 검사 결과:** 신규 생성 (New discovery) ## 🔗 지식 그래프 (Knowledge Graph) - **상위/루트:** [[C++ Tutorial]] - **관련 개념:** [[CPP Classes]], [[CPP Constructors]], [[CPP Functions Decl]] - **참조 맥락:** OOP Basics 섹션 마지막 — 생성자(Constructors) 섹션으로 이어짐. ## 📚 출처 (Sources) - [S1] W3Schools — C++ Class Methods — https://www.w3schools.com/cpp/cpp_class_methods.asp ## 📝 변경 이력 (Change history) - 2026-07-04: Initial draft synthesized from the W3Schools "C++ Class Methods" page (Astra wiki-curation, P-Reinforce v3.1 format).