728x90

LANG 47

복사생성자 / extern 키워드

*복사생성자 (기본으로 생성되는 것 중 하나) 의미 : 클래스를 복사하여 생성하는 생성자 기본생성자 - 단 한개의 생성자라도 명시적으로 구현되어 있으면 생성 안 됨 복사생성자 - 단 한개의 생성자라도 명시적으로 구현되어 있으면 상성 안 됨 (기본생성자와 마찬가지) 복사생성자 > 기본생성자 복사생성자 : 기본생성자를 생성 + 오버로딩까지 해야 하니 더 느림 기존: 하나하나 생성자로 만들면 몬스터 10마리 만들 때 멤버변수가 20개면 총 200번의 초기화를 해야한다. 현재: 복사생성자를 사용하면 메모리 전체를 복사하기 때문에 1:1 초기화를 할 필요 없이 한번에 메모리를 전부 복사해준다. (다수의 멤버 복사 시 이득을 보게 된다.) 1. 먼저 만든 객체를 매개 변수로 전달하여 객체를 생성하는 경우#inclu..

LANG 2024.02.06

피연산자/변수,상수/선언/자료형

읽기: 저장된 데이터를 갖고 오는 행위 쓰기 : 저장하는 행위 피연산자에는 변수와 상수가 있음 상수: 고정되어 있는 값 - 리터럴 상수: 이미 고정된 숫자 (ex) 10, 3.14) - 심볼릭 상수: 프로그래밍에서 const 키워드 부여하여 상수로 만들어놓은 상태 변수: 코드의 진행에 따라 값이 변하는 형태의 숫자 (정수, 실수, 문자, 논리타입) 선언: 메모리(RAM)공간에 이름을 부여하는 행위 ( 컴파일러가 메모리공간에 가서 number라는 애를 찾아 불러오게 함) 선언만 하면 쓰레기값이 들어있음. 선언과 동시에 초기화: 메모리 공간을 할당받을 때 내가 원하는 값으로 채워서 할당받는 것 (여기서 RAM - 항상 프로그래밍할때 사용하는 메모리를 가리킴) (그리고 할당할 때 항상 운영체제(OS, 즉 wi..

LANG 2024.01.05

[C++]15-2.C++의 예외처리 매커니즘

1.C++의 예외처리 매커니즘 이해: try와 catch그리고 throw의 이해 * try: 예외를 발견하다. * catch: 예외를 잡는다. * throw: 예외를 던진다. try { //예외발생 예상지역 } catch 블록 { //예외처리 코드의 삽입 } 항상 이어서 등장해야 됨. try 블록 내에서 발생하는 예외는 이어서 등장하는 catch블록에 의해 처리된다. throw: 예외가 발생했음을 알리는 문장의 구성에 사용된다. throw expn;

LANG/C++ 2023.05.26

[C++]13-2.클래스 템플릿(Class Template)

1.클래스 템플릿: 클래스를 템플릿으로 정의한 것 템플릿 클래스: 이를 기반으로 컴파일러가 만들어낸 클래스 이렇게 하면 별도의 클래스를 정의할 필요가 없음. 주의! 템플릿 함수를 호출할 때와 마찬가지로 템플릿의 객체를 생성할 때 과 같은 자료형 정보 생략이 가능? =>NO! 불가 2.클래스 템플릿의 선언과 정의의 분리 템플릿의 멤버함수는 외부에 정의해야 함 요런 식으로...

LANG/C++ 2023.05.26

[C++]13-1.템플릿에 대한 이해와 함수 템플릿

1. 함수 템플릿은 함수를 만들어 낸다. 함수의 기능은 결정되어 있지만, 자료형은 결정되어 있지 않아서 결정해야 한다. template //T라는 이름을 이용해서 아래의 함수를 템플릿으로 정의한다. T Add(T num1, T num2) { return num1 + num2; } template = template 자동 형변환해주는 것을 볼 수 있음. 한 번 함수가 만들어지면, 그 다음에는 만들어진 함수를 호출할 뿐, 새로운 함수를 만들지는 않음. 12, 13행에서 함수가 만들어지면, 14,15행에서 문장을 컴파일할 때는 앞서 만들어놓은 두 함수를 호출할 뿐임 즉, 함수는 자료형 당 하나만 만들어짐. 자료형을 붙이지 않으면 자동으로 자료형을 할당해줌 '함수 템플릿': 앞서 보인 다음의 정의와 같은 것 t..

LANG/C++ 2023.05.26

[C++]12-2.문자열 처리 클래스의 정의

string 클래스 디자인 목적: 문자열 처리 클래스를 직접 구현해봄으로써 연산자가 어떠한 형태로 오버로딩되어있는지 고민 1.표준 string 클래스의 분석 String클래스가 요구하는 것 1) 문자열을 인자로 전달받는 생성자의 정의 string str1 = "I like"; string str2 = "string class"; //위는 아래와 같다. string str1("I like"); string str2("string class"); 2)생성자, 소멸자, 복사 생성자 그리고 대입 연산자의 정의 저장하고자 하는 문자열의 길이가 일정치 않으므로 문자열 저장을 위한 메모리 공간을 생성자 내에서 동적할당 해야함. 3)결합된 문자열로 초기화된 객체를 반환하는 +연산자의 오버로딩 string str3 = ..

LANG/C++ 2023.05.23
728x90