목록언어/C, C++ (22)
개발하는 리프터 꽃게맨입니다.
클래스를 기본적으로 정의하면 암시적으로 생성되는 함수들이 있습니다. 1) 기본 생성자 2) 기본 소멸자 3) 기본 복사 생성자 4) 기본 대입 연산자 class Object { //이 아래 코드는 굳이 명시하지 않아도 //기본적으로 컴파일러가 만들어준다. public: //기본 생성자 Object() {} //기본 소멸자 ~Object() {} //기본 복사 생성자 Object(const Object& other) : a(other.a) , b(other.b) {} //기본 대입 연산자 Object& operator=(const Object& other) { if(this != &other) { Object newObject; newObject.a = other.a; newObject.b = other...
오버로딩 이름은 같지만 매개변수가 다르며 같은 유효 범위 내에 있는 함수를 '오버로딩'한다고 합니다. 다음 코드를 볼까요? void SayHello(int num) { cout
기본 접근권한을 제외하고는 전혀 차이가 없습니다. 접근권한을 명시하지 않을 경우 구조체는 public 클래스는 private라는 차이점만 존재하고 클래스에서 할 수 있는 모든 기능은 구조체 또한 할 수 있습니다. 컴퓨터 또한 이 둘을 구분하지 못하죠. 구조체도 class처럼 멤버 함수, 멤버 변수, 생성자, 소멸자, operater 오버로딩, 가상 함수, 상속 등.. 모든 걸 다 할 수 있습니다. 근데, 보통은 가능하다해도 구조체를 class 처럼 쓰는 사람은 별로 없습니다. 대부분의 코딩 규약에서는 둘을 엄밀하게 구분하죠, 헷갈리니까요. 개발자들은 구조체는 전통적인 C 스타일로 쓰는 것을 선호합니다. 다른 데이터 형식을 묶어서 관리하는 용도로만 쓰이죠. 멤버 함수, 가상함수, 상속 등 OOP 개념은 완..
1. 생성자란? 생성자(constructor)란 클래스에서 해당 타입의 객체를 초기화하는 방법을 정의하는 특별한 멤버 함수를 의미합니다. 생성자에서는 객체가 선언되었을 때 멤버 변수를 초기화하거나, 동적 할당을 하는 등 초기에 해줘야 할 행동들을 명시합니다. 기본적인 형태는 다음과 같습니다. /* 학생의 이름, 나이, 키를 저장하는 클래스 */ class Student { //참고: class의 기본적인 접근 제어자는 'private' 입니다. //생성자는 무조건적으로 public으로 지정한 뒤 정의하도록 합니다. public: Student() {} private: string_name; int_age; float_height; }; 위 형태처럼 인자를 아무것도 넣지 않은 상태의 생성자를 '기본 생성자..
malloc과 new 둘 다 동적 메모리 할당, 힙 메모리의 사용을 위해 호출하는 명령어입니다. 언뜻 보기에는 둘 다 똑같은 명령어 같고, 동적 메모리 할당할 때 malloc은 C에서 쓰고 new는 C++에서 쓰는 명령어다! 라고 이해하시는 분들도 많습니다. 간단하게 두 개의 공통점과 차이점, 예시를 알아보도록 하겠습니다. 1. 공통점 - 동적 메모리를 할당한다. - 지정된 크기의 메모리 블록을 할당하고, 시작 주소의 포인터를 반환한다. - 명시적으로 해제를 해줘야 한다. 2. malloc의 특징 /* malloc의 기본 형식 */ #include void *malloc(size_t size); - malloc은 void* 를 반환한다. 그래서 형변환 캐스팅이 필수적입니다. - size를 바이트 단위로 ..