목록C++ (17)
도슐랭스타

cin과 cout이 ""같은 시프트 연산자를 만나면 콘솔에 입출력을 할 수 있다. cout.width() #include using namespace std; int main() { cout.width(10); cout
Generic programming 자료형이 나중에 결정되는 프로그래밍이다. 템플릿(Template) 매개변수를 통한 다형성을 제공한다. 코드는 전혀 바뀌지 않고 형만 다른 함수가 필요하다면 함수중첩 대신 템플릿을 사용하는 것이 좋다. 매개변수의 자료형과 값을 인자로 받아 함수를 생성시키는 포괄적 함수(generic function)이다. 템플릿 사용이유 #include using std::cout; using std::endl; int Min(int i, int j) { return i

바인딩(binding) 명령어들이 결정되는 시점이다. 정적(static)바인딩과 동적(dynamic)바인딩이 있다. 정적(static) 바인딩 컴파일 시간에 발생하는 바인딩이다. 정적으로 선언된 식별자는 컴파일러에 의해 메모리 위치나 코드 영역과 연결된다. 동적(dynamic) 바인딩 실행 시간에 발생하는 바인딩이다. 가상 함수나 가상 클래스를 사용할 경우, 함수 호출 시점에 실제로 호출할 함수가 결정된다. 아무것도 적지 않은 auto int x는 동적 바인딩으로 실행시에 초기값이 결정된다. static은 정적 바인딩으로 컴파일시 초기값이 결정되며 해당 블록이 끝나도 프로그램이 종료될 때까지 값을 유지한다. static은 모든 객체가 공유하는 멤버변수를 만들 때 사용한다.(하나만 만들어짐) 반드시! 초기..
다중상속 하나의 클래스가 여러 개의 부모 클래스로부터 상속을 받는 것이다. 다중 상속을 지원하지 않는 프로그래밍 언어가 많다.(ex.Java, C#, Ruby, Swift) -> 다중 상속을 사용할 경우 '다이아몬드 문제(Diamond Problem)'라고 불리는 상황이 발생할 수 있기 때문에 사용 시 주의가 필요하다. 다이아몬드 문제( Diamond Problem ) A / \ B C \ / D 이름 충돌 클래스 D가 클래스 B와 클래스 C로부터 상속 받은 멤버 중 동일한 이름을 가진 멤버가 있는 경우, 해당 멤버에 접근할 때 모호성이 발생한다. 컴파일러는 어떤 멤버에 접근해야 하는지 판단하기 어려워 에러가 발생한다. 중복된 데이터 클래스 D가 클래스 B와 클래스 C로부터 각각 상속 받은 클래스 A의 ..

#include using std::cout; class Dot { public: void draw() { cout

다중상속 하나의 클래스가 여러 개의 부모 클래스로부터 상속을 받는 것이다. 다중 상속 예시-1 #include using std::cout; using std::endl; class A1 // 아버지 { int a; public: A1(int i) { a = i; } int getA() { return a; } }; class A2 // 어머니 { int b; public: A2(int i) { b = i; } int getB() { return b; } }; class B :public A1, public A2 { // 기본 클래스 A1과 A2로부터 // 상속 받은 파생 클래스 int c; public: B(int i, int j, int k) :A1(i), A2(j) { c = k; } // i는 기..

객체지향 프로그래밍의 중심 기술 캡슐화 다형성 상속성 상속성 기존에 정의된 클래스(부모 클래스)의 '속성'과 '메서드'를 새로운 클래스(자식 클래스)가 물려받아 사용하는 것이다. 상속의 장점 코드의 재사용성을 높인다. = 코드의 중복을 줄일 수 있다. 가독성을 높인다. 유지 보수를 용이하게 해준다. 클래스 상속의 형식 class 파생클래스명 : 상속접근제어 기본클래스명 { ~~ }; class Cat : public Animal { }; //Animal클래스로부터 public으로 상속받은 Cat클래스 클래스 상속의 예시 #include using std::cout; class A{// 기본 클래스, 부모 클래스 private: void a1() { cout
Overloading(오버로딩) 매개변수의 타입이나 개수를 다르게 하여 같은 이름의 함수나 메서드를 여러 개 만드는 것이다. 동일한 목적을 가진 함수나 메서드를 같은 이름으로 관리할 수 있다. //C에서는 불가능 void print(int i) { cout
Default Parameter 함수를 호출할 때 특정 인자(argument)가 제공되지 않으면 자동으로 사용되는 기본값을 말한다. #include int add(int i = 1, int j = 2) // 형식매개변수 { return(i + j); } int main() { std::cout

객체지향 언어의 특징 캡슐화 : 외부에서 직접 수정하거나 접근하지 못하게 하여 객체의 안정성을 유지하는 것. 상속 : 한 클래스의 속성과 메서드를 다른 클래스가 받아 사용할 수 있도록 하는 것. 다형성 : 하나의 인터페이스나 클래스를 여러 형태로 사용할 수 있게 하는 것. 함수 중첩(function overloading) 함수 오버로딩 다형성을 구현하는 한 가지 방법 매개변수의 타입이나 개수를 다르게 하여 같은 이름의 함수를 여러 개 만드는 것이다. ★컴파일러가 매개변수의 입력 자료형에 따라서 자동적으로 해당 함수를 연결해 준다. C++에서는 함수 중첩이 가능하지만 C에서는 함수 중첩을 할 수 없다. //C int add_i(int i, int j) { return (i + j); } float add_..