Programming Language

상속 예제 // Animal.hpp class Animal { public: Animal(int age); ~Animal(); // 소멸자 추가 private: int mAge; }; // Cat.hpp class Cat : public Animal { public: Cat(int age, const char* name); ~Cat(); // 소멸자 추가 private: char* mName; }; // Cat.cpp Cat::Cat(int age, const char* name) : Animal(age) { size_t size = strlen(name) + 1; mName = new char[size]; strcpy(mName, name); } Cat::~Cat() { delete[] mName; /..
const를 사용하는 이유 멤버 변수의 값이 바뀌는 것을 방지한다. 객체가 상수화되어 있으면 해당 객체의 멤버 변수를 변경할 수 없으므로 안전성을 제공한다. 최대한 많은 곳에 const를 붙여야 한다. 코드를 읽는 사람에게 해당 변수나 함수의 의도를 명확히 전달하고, 컴파일러에게 잠재적인 오류를 찾아내도록 돕는다. Local 변수에도 그렇게 해야한다. 함수 내에서 값이 변경되지 않는 변수에 const를 사용하면 함수의 의도를 명확히 하고, 컴파일러가 불필요한 변경을 방지할 수 있다. Vector를 더하는 a + b의 경우 Vector operator+(const Vector& rhs) const; a와 b Vector는 더하려는 값일 뿐 변해서는 안된다. 연산자 오버로딩과 const Vector oper..
연산자 함수처럼 작동하는 부호 int result = num1 + num2; if (num1 < num2) {} if (IsNumber() || IsAlph()) {} num1++; num1 += 1; 연산자의 종류 단항 연산자 ! & ~ * + ++ - -- 변환 연산자 등 if (!IsNumber()) {} Vector& vRef = vector1; // 레퍼런스는 단항 연산자가 아니다. int hexNum = 0xFF00; int inversion = ~hexNum; int *number1 = &number; // 주소를 불러오는 건 단항 연산자이다. *number1 = 10; int number2 = +10; int number3 = -10; ++num1; num1--; --num1; num1--..
메서드 오버로딩 class X { public: void Print(int score); void Print(const char * name); void Print(float gpa, const char *name); }; 메서드 오버로딩은 같은 이름의 메서드에 대해 다양한 매개변수를 가질 수 있도록 하는 기능이다. 불러오는 매개변수에 따라 어떤 메서드가 호출될지 결정된다. 함수 오버로딩 함수 오버로딩은 같은 이름의 함수에 대해 다양한 매개변수를 가질 수 있도록 하는 기능이다. 매개변수 목록을 제외하고는 동일한 이름의 함수이며, 반환형이 다르더라도 상관없다. 위의 코드에서 int Print(int score)는 오류가 발생한다. 함수 오버로딩은 매개변수의 타입, 순서, 개수를 고려하여 매칭을 수행하는데,..
복사 생성자 인스턴스의 사본을 만드는 것. 만약 들고 있는 것이 레퍼런스라면, 레퍼런스의 주소값을 복사해줄 것인지의 문제가 있다. // Vector.h class Vector { public: Vector(const Vector& other); private: int mX; int mY; }; // Vector.cpp Vector::Vector(const Vector& other) : mX(other.mX) , mY(other.mY) // private 이지만, 같은 class 이기 때문에 접근 가능하다. { } 같은 클래스의 다른 개체를 이용하여 새로운 개체를 초기화하는 것은 다음과 같다. Vector(const Vector& other); Vector a; // default constructor 또..
구조체 VS 클래스 구조체(struct)와 클래스(class)는 C++에서 데이터를 그룹화하고 캡슐화하기 위한 두 가지 주요 방법이다. 이 둘은 많은 면에서 유사하지만 몇 가지 중요한 차이점이 있다. 공통점 멤버 변수와 함수 포함: 클래스와 구조체 모두 멤버 변수와 함수를 포함할 수 있다. 캡슐화: 멤버 변수와 함수를 하나의 단위로 캡슐화할 수 있다. 인스턴스 생성: 클래스와 구조체 모두 인스턴스를 생성하여 사용할 수 있다. 차이점 1. 기본 접근 권한 구조체(struct): 기본적으로 모든 멤버가 public이다. 클래스(class): 기본적으로 모든 멤버가 private이다. // 구조체 struct Vector { int x; // public int y; // public }; // 클래스 cla..
Vector 클래스의 멤버 함수 // Vector.h class Vector { public: void SetX(int x); void SetY(int y); int GetX() const; int GetY() const; void Add(const Vector& other); private: int mX; int mY; }; const의 의미 바꿀 수 없음. // const 변수 const int LINE_SIZE = 20; LINE_SIZE = 10; // compile error // const 메서드 int GetX() const; method란? 오브젝트 안의 클래스 안의 함수를 method라고 부른다. 그 안에 포함되지 않는 전역 함수를 함수라고 부른다. 이 둘은 혼용되기도 하며, 신경 쓰지 ..
coco_daddy
'Programming Language' 카테고리의 글 목록 (5 Page)