본문 바로가기

C & C++/C++14

[C++] 형변환 Ch 04. 형변환형변환 규칙형변환이 일어나는 다양한 경우// 변수에 대입할 때float f = 10; // int 에서 float으로 형 변환이 일어남// 함수에 파라미터로 전달할 때void func(float f){ ... }func(10); // int -> float 형 변환// 연산할 때cout float 형 변환promotion, 승급, widening, 확장 변환// 범위가 좁은 타입이 더 넓은 타입으로 변환 될 때char c = 'a';int i = c; // char -> int 로 형 변환demotion, 강등, narrowing, 축소변환, coercion// 범위가 넓은 타입이 더 큰 타입으로 변환 될 때char c = 1999;// 서로 다른 표현 방법을 사용할 때int i = .. 2024. 8. 7.
[C++] 상속 Ch 03. 상속상속의 기본자식 클래스가 부모 클래스의 필드와 메소드를 포함한 속성을 물려받는 것이 상속이다.//문법class 자식클래스 : public 부모클래스 // public 변경 가능{ //클래스 명세}class Base{public: int num; void func() { cout 부모 클래스의 private 에 저장되어 있는 속성은 자식 클래스에서 접근할 수 없다. 그래서 외부에서는 접근이 제한되지만 자식클래스에는 접근을 허용하고 싶다면 protected 키워드를 사용해야 한다.class Base{protected: // 외부에서는 접근 불가 int num; void func() { cout 자식 클래스의 객체를 생성하면 우선 부모클.. 2024. 8. 5.
[C++] 연산자 오버로딩 Ch 02. 연산자 오버로딩산술 연산자 오버로딩클래스끼리의 연산을 가능하게 연산자를 정의하는 것을 연산자 오버로딩이라고 한다.#include using namespace std;// operator overloadingclass Vector{public: float x; float y; float z;}; // Class Vector벡터 클래스를 이용한 연산자 오버로딩 예시Vector v1{1, 2, 3};Vector v2{4, 5, 6};Vector v3 = v1 + v2; // 3행은 아래와 같다. // Vector v3 = v1.operator+(v2); operator+() 라는 이름의 함수를 오버로딩 한다고 생각하면 된다.class Vector{public: float x; f.. 2024. 7. 16.
[C++] 클래스 C++로 마스터하는 객체지향 언어와 STL Ch 01. 클래스객체지향 개괄객체지향도 절차지향적으로 코드를 작성하지만 객체를 중심으로 기술한다. 어떤 방식으로 사고를 하며 코드를 작성하는 것인지가 중요하다. { //C++ 스타일 string s0 = "hello"; string s1 = "world"; s0.append(s1); //s0 += s1; cout C style : 내부 구현이 드러나 있고 이를 고려해서 작성해야한다.C++ Style : 내부 구현이 드러나 있지 않은 추상화 된 상태로 작성한다.클래스와 객체class Player //클래스{ int health; int damage;};int main(){ Player player0; //객체 return 0;}st.. 2024. 7. 13.
[C++] 함수, 범위, 공간 Ch 09. 함수함수의 기본반환타입 함수이름(인자){ 함수몸체 return 반환값;}메인 함수int main(int argc, char* argv[]) { return 0; }//argc는 아규먼트의 개수, argv는 문자열 배열인 아규먼트를 의미한다.//위 변수들이 실행 시 넘겨주는 인자를 받게 된다.return 은 반환뿐만 아니라 함수의 종료도 의미한다.컴파일러는 위에서 아래로 읽기 때문에 함수를 사용하려면 사용한 시점보다 위에 함수가 정의되어 있어야 한다. 이를 해결하기 위해 함수의 선언 (prototype)을 앞쪽에 선언한다. (전방선언)int csun(int a, int b); // 프로토 타입 전방선언int cabs(int); // 프로토 타입의 변수명은 생략이 가능하다.int csumabs(.. 2024. 7. 8.
[C++] 포인터, 참조 Ch 07. 포인터포인터의 기본포인터 : 메모리의 주소를 저장하는 변수int num = 10;int* numptr = #//&num 은 num의 주소값을 의미한다.coutconst 포인터int num = 10;const int* pNum = #int const* pNum = #//포인터를 이용하여 참조값을 변경할 수 없음int* const pNum = #//포인터가 가르키는 대상을 바꿀 수 없음const int* const pNum = #//두가지 다 바꿀 수 없음배열과의 관계배열은 포인터로 변환이 된다. 하지만 동일하지는 않다. decay 특성.배열의 이름은 배열의 0번째 주소를 리턴한다.int nums[] = { 1, 2, 3 };int pNums = nums;co.. 2024. 7. 1.