언어 공부/C++

함수 오버로딩 함수의 이름은 동일 매개변수의 type, 갯수가 다름 return type은 관계없음 연산자 오버로딩 C++ 은 다양한 연산자 오버로딩 가능 >>,
복사 생성자 다른 객체(같은 클래스)를 이용해서 새로운 객체를 초기화 암시적(implicit) 복사 생성자 코드에 복사생성자가 없는 경우, 컴파일러가 암시적 복사생성자를 자동생성 암시적 복사 생성자는 얕은 복사를 수행 얕은 복사?? 각멤버값을 복사해서 넣음. 얕은 복사의 문제점 -> 안에 포인터형 변수가 동적메모리를 가리킨다면 주소만 바뀌어 별도의 메모리공간이 아닌 같은 메모리 공간을 가리키게 되는 문제점 발생 따라서 직접 복사생성자를 만들어 깊은 복사를 수행하여야함.
String class 키보드 입력 Cstyle: cin.getline(배열주소, 크기, 구분자) C++style: getline(cin, string class, 구분자) string 함수 string base = "Hello" 문자열의 크기 base.size(), base.length() 문자열 추가 base.append("Word") 할당된 메모리의 크기: base.capacity() 값 추출: base.at(index) 검색함수 : base.find(문자열, index) index부터 문자열 찾아서 첫번째 위치 리턴 검색함수: base.replace(index, 원래있던 문자열의 길이, 바꿀문자열) 문자연산자: >, >=, == 슬라이싱: substr(index, 크기) -> index 부터 크기..
객체배열 Circle arr[3]; 객체생성할 때 디폴트생성자로 만들어짐 초기화 방법 for문사용 선언과 동시에 초기화(Circle arr[3] = {Circle(1), Circle(2), Circle(3)}) 동적메모리 프로그램 실행중 만들수있음. delete p, 배열 delete [] p 해서 동적메모리 해제 시킬 수 있음. 포인터로만 사용가능 배열할당시 할당과 초기화를 동시에 할 수없음 사용방식 Circle* p = new Circle(); this 현재 실행중인 객체의 포인터 객체에서만 사용가능 컴파일러가 선언한 포인터 변수 필요한이유 매개변수 이름 이 멤버변수이름이랑 같을때 구분지어줌 멤버함수가 현재객체의 주소를 리턴할 때 필요 사용범위 멤버함수에서만 사용
클래스: 공통적인 성질의 집합 - 멤버변수, 멤버함수(메서드)로 구성 - class 선언부와 구현부로 나뉨. 클래스 선언부 -> .h파일 클래스 구현부 -> .cpp 파일 main함수 -> main.cpp 나누는 이유: 프로그램을 재사용하는데 편리 하기 때문이다. 조건컴파일 헤더파일의 중복include 문제 방지 #ifndef CIRCLE_H #define CIRCLE_H #endif 접근제어자 private : 클래스내의 메서드만 접근가능 protected : private + 상속된 개체의 메서드만 접근가능 public: 누구든 접근 가능 생성자 객체 생성, 초기화가 목적 class 이름 = 생성자 이름 생성 방법 default 생성자(자동생성) user 생성자 정의(자동생성X) return 값 없음..
계절학기가 끝난 후에 올리는 객체지향 프로그래밍 공부 내용(중간중간 Pocu아카데미에서 배운내용도 함께 정리) 1. 헤더파일이 다름 (stdio.h)의 헤더도 포함되어있기에 C와 호환가능 2. 입출력 -> cin, cout 객체 사용 3. bool type이 생김 4. string class -> 변수처럼 사용 5. 클래스라는 개념 OOP의 특성 1. Encapsulation 데이터와 데이터에 작용하는 메서드를 하나로 묶음 정보숨기기(data hiding): 객체안에 있는 데이터를 외부로부터 보호 2. Inheritance 이미 존재하는 객체기반으로 확장된 객체를 만드는 방법 실용적 용도: 코드중복 방지 3. Polymorphism OOP의 핵심 특징 같은 지시를 내렸는데 다른 종류의 객체가 동작을 달리..
LTSGOD
'언어 공부/C++' 카테고리의 글 목록