C++ 썸네일형 리스트형 C++ chpt7. 생성자(Constructor)// JAVApublic class Vector{ private int x; private int y; // 기본 0으로 자동 초기화 // 매개변수 없는 생성자 // 안만들어도 상관없음 public Vector() // 위의 멤버 변수에 값을 지정하는 것과 같아서 필요성이 적음 { x = 0; y = 0; }}// JAVA 는 라이브러리를 만들어서 배포하는 할 때, cpp 와 헤더 파일이 분리 되어있지 않음// 패키지를 사용하는 사람들은 해당 소스코드를 볼 방법이 없음(publice, private 모두)// 또한 제작자는 위에서 부터 데이터를 보면서 무슨 데이터가 있는지를 볼 수 있기 때문에// priv.. 더보기 윤성우의 열혈 C++ chpt7. 객체 배열과 객체 포인터 배열Person arr[3];Person *parr = new Person[3];객체로 이루어진 배열로 배열 생성시 객체가 함께 생성됨== 객체 배열(이 경우 호출되는 생성자는 default 생성자) 즉, chpt6 에서 다뤘던 내용에 의하면 해당 객체에 defult 생성자가 없을 경우 컴파일러가 에러를 발생시킴. 이 문제의 경우 해결 방법으론 두 가지를 제시할 수 있다.기본 생성자 명시하기오버로딩만 사용할 경우 default 파라미터 설정하기 Person *arr[3];arr[0] = new Person(name, age);arr[1] = new Person(name, age);arr[2] = new Person(name, age);객체를 저장할 수 있는 포인터 변수르 이뤄진 .. 더보기 윤성우의 열혈 C++ chpt6. 생성자의 이해C에선 변수 사용시 선언과 동시에 초기화를 하거나 필요시 선언 후 값을 대입하는 과정을 사용했음또는 객체 프로그래밍에서 '생성자라는 개념없는 전제'에선별도의 함수를 호출을 통해 객체의 해당 멤버 변수의 값을 대입 시켜주는 행위로 변수의 값을 설정해줄 수 있음 객체 프로그래밍에서 객체의 멤버 변수를 함수로 값을 설정해준다면선 선언/후 대입이라는 매번 별도로 값을 대입해줘야 되는 행위의 불편함이 존재하며, 이 불편함을 매 사용시마다 겪어야함 이걸 정리 해주는 즉, 객체 멤버 변수의 생성과 초기화를 동시에 자동으로 처리할 수 있게 해주는 함수가 '생성자' 함수 생성자는 객체가 생성될 때 자동으로 호출되는 것으로(반대로 객체가 소멸될 때 자동으로 호출되는 것은 소멸자라고 한다) C++ 의 생성자는.. 더보기 C++ chpt6. 개체지향 프로그래밍(OOP: Object-Orieted Programming)JAVA vs C++ JAVA클래스개체생성자함수 오버로딩힙에 개체 생성하기C++클래스개체생성자함수 오버로딩힙에 개체 생성하기스택에 개체 생성하기복사 생성자소멸자연산자 오버로딩C++ 에서는 OOP 와 OOP 가 아닌 것을 섞어 쓸 수 있음 (C 와의 호환성)C++ 은 언매니지드 언어이기 때문에 매니지드언어인 JAVA 에 없는 특별한 기능이 많음 OOP 란 뭘까?'사람들이 세상을 바라보는 방식' 직관적다음 이미지는 '사람' 을 예시로 들 때, 사람이 가지는 데이터나 행위에 대해 예를 든 것이다위 예시를 아래처럼 코드화하는 것이 OOP 의 방식이다.// JAVA 클래스public class Human{ private stri.. 더보기 윤성우의 열혈 C++ chpt5. 정보 은닉의 이해class point{public: int x; // x좌표의 범위는 0 이상 100 이하 int y; // y좌표의 범위는 0 이상 100 이하 // 정보 은닉 실패};class Rectangle{public: Point upLeft; Point lowRight; // 정보 은닉 실패public: void ShowRecInfo() { cout 예제에서 보이듯이 멤버변수의 외부접근을 허용하면, 잘못된 값이 저장되는 문제가 발생할 수 있다. 따라서 멤버변수의 외부접근을 막게 되는데, 이를 가리켜 '정보은닉'이라 한다. Point의 멤버변수에는 0~100 이외의 값이 들어오는 것을 막는 장치가 없고,Rectangle의 멤버변수에는 좌우 .. 더보기 윤성우의 열혈 C++ chpt4. C++ 에서의 구조체구조체의 등장 배경연관 있는 데이터를 하나로 묶으면 프로그램의 구현 및 관리가 용이구조체는 연관 있는 데이터를 하나로 묶는 문법정 장치연관 있는 데이터들은 생성 및 소멸의 시점이 일치하고, 이동 및 전달의 시점 및 방법이 일치하기 때문에 하나의 자료형으로 묶어서 관리하는 것이 용이하다. C++ 에서의 구조체 변수 선언// C 구조체 변수 초기화struct Car basicCar;struct Car simpleCar;-------------------------------------// C++ 구조체 변수 초기화Car basicCar;Car simpleCar;C++ 에서는 구조체 변수 선언시 struct 키워드의 생략을 위한 typedef 선언이 불필요 struct Car{ ch.. 더보기 윤성우의 열혈 C++ chpt3. '참' 을 의미하는 의미하는 true 와 '거짓'을 의미하는 falseint main(void){ int num=10; int i=0; cout num) break ; } cout true는 ‘참’을 의미하는 1바이트 데이터이고, false는 ‘거짓’을 의미하는 1바이트 데이터이다. 이 둘은 각각 정수 1과 0이 아니다. 그러나 정수가 와야 할 위치에 오게 되면, 각각 1과 0으로 변환이 된다.int num1 = true; // num1 에는 1 이 저장됨int num2 = false; // num2 에는 0 이 저장됨int num3 = true + false // num3 = 1 + 0; 자료형 bool true 와 false 는 bool 형 데이터이다.. 더보기 윤성우의 열혈 C++ chpt2. 이름 공간의 기본원리 프로젝트의 진행에 있어서 발생할 수 있는 이름의 충돌을 막을 목적으로 존재하는 것이 이름 공간이다.namespace BestComImpl{ void SimpleFunc(void) { std::cout 이름공간 기반의 함수 선언과 정의의 분리namespace BestComImpl{ void SimpleFunc(void); //이름공간 BestComImpl에 위치하는 함수 SimpleFunc의 선언과 정의의 분리}namespace ProgComImpl{ void SimpleFunc(void); // 이름공간 ProgComImpl에 위치하는 함수 SimpleFunc의 선언과 정의의 분리}int main(void){ BestComImpl::Simpl.. 더보기 이전 1 2 3 다음