。공부 。 70

<C++> 복사생성자

일반생성자는 객체를 제외한 여러타입의 데이터를 초기화 하기 위해 쓰이는데 복사생성자는 객체를 초기화하는데 쓰이는 생성자라 생각하면 쉽다. 생성자에도 디폴트 생성자가있듯 복사생성자에도 디폴트 복사생성자가 존재한다. * 디폴트 복사 생성자 * - 사용자 정의 복사 생성자가 없을때 자동 삽입된다. - 멤버변수대 멤버변수의 복사를 수행 - 멤버변수의 타입과 갯수에 따라 달리 정의된다. - 얉은 복사(?) class Lee{ //Lee클래스 int x,y; public: Lee(int _x,int _y){ x=_x; y=_y; } Lee(const Lee &a){ //디폴트 복사생성자(정의하지않으면 이러한형테로 복사생성자가 생성된다. ) x=a.x; y=a.y; } }; int main(void){ Lee a(1..

。공부 。 2007.12.04

<C++> 메모리공간 동적할당

메모리공간을 효율적으로 사용하기 위해 우리는 메모리공간을 동적할당한다. 물론 배열을 이용해도 똑같은 결과를 얻을수 있지만 만약 데이터를 사용자로 부터 입력을 받는다고 했을때 모든사용자가 똑같은 길이의 값이나 내용을 입력하진 않을것이다 이럴때 배열을 이용한다면 우리는 배열의 크기를 얼마로 잡아야할지 정말 난감할것이다 이럴때 메모리공간은을 동적할당한다면 문제는 해결된다 사용자가 입력한 데이터의 길이만큼 메모리공간이 할당되기때문에 메모리공간은 효율적으로 운영이 된다. - 동적할당 예제 - class apple{ char *name; char *address; int number; public: apple(char *_name,char *_address,int _number); }; apple::apple(ch..

。공부 。 2007.11.30

<C++> 생성자와 소멸자

객체를 생성할때 생성절차를 꼭밟아야하는것이 있는데 생성자와 소멸자가 그들이다. 객체를 생성하기 위해서 생성자와 소멸자가 필요하다 물론 생성자와 소멸자를 정의하지 않아도 객체생성은 가능하다 디폴트 생성자와 디폴트 소멸자가 존재하기때문에 가능한것이다. 디폴드생성자와소멸자는 아무것도 없다 단지 객체생성의 규칙이이때문에 존재해야하는것이다. * 생성자 * - 객체를 생성과 동시에 호출되어지는 함수를 말한다. - 리턴타입을 갖지않으며 리턴하지도 않는다. - 생성자이름은 클래스명과 동일해야한다. - 생성자 오버로딩이 디폴트매개변수 선언이 가능하다. - 주로 데이터를 초기화할때 사용되고 디버깅할때도 사용된다. * 소멸자 * - 객체가 소멸과 동시에 호출되어지는 함수를 말한다. - 리턴타입을 갖지않으며 리턴하지도 않는다..

。공부 。 2007.11.29

<C++> 캡슐화와 추상화란?

추상화란.. 약을 예로 들면 약엔 알약 가루약 그리고 캡슐로 쌓여져 있는 약이 있죠? 그 캡슐 안에는 우리가 모르는 종류의 처방약들이 들어있을 것입니다. 근데 우리가 그 약을 먹을때 이안에 어떤어떤 기능을 해주는 어떤어떤종류의 약들이 들어있다 라고 알고 먹는 사람들은 극히 들물것이다. 이약하나만 먹으면 감기가나으니까 이건 감기약이야 하고 먹어버리면 그만이니까 말이다 이렇듯 사람들은 이약에 이것저것 무엇이들었는지 복잡하게 생각할필요없이 단지 감기약이라는것만 알고 먹으면 그만이다 이러한것을 추상화라한다. 음.. 하얀박스에 빨간십자가가 그려져있습니다. 그통이 무엇이라고 생각하죠? 그렇죠 약상자입니다 당연히 그상자엔 약이들어있겠고요.. 이것역시 추상화랍니다. 캡슐화란.. C++ 로 간단히 은행시스템의 계좌를 예..

。공부 。 2007.11.29

<C++> 레퍼런스

레퍼런스를 이용해 메모리공간을 좀더 효율적으로 사용할수 있다. 레퍼런스를 간단히 설명하자면 할당된 메모리 공간에 또하나의 다른이름을 붙인다고 생각하면 쉽다 만들어진 레퍼런스 변수는 일반변수와 똑같이 사용된다. 레퍼런스 선언방법과 사용방법을 알아보자 * 레퍼런스 선언 * int main(void){ int val=10; int &ref=val; //변수 val에 또다른 이름을 붙인다.(레퍼런스선언) val++; cout

。공부 。 2007.11.25

<MySQL> locate(),position()함수

MySQL에는 locate()와 position()라는 함수가 존재한다. 함수만 해석한다면 위치를 반환하라 정도? 맞는말이다 위치를 반화하는것이다 하지만 비교하는 문자의 값이 비교할 데이터와 일치해야만 위치를 반환한다. locate()함수와 positiion()함수는 같은 기능을한다. * locate();함수사용법 * - select locate('ayoe','qqkyoeqq'); 문자'a'이후의 값'yoe'는 일치하지만 첫문자'a'와'k'가 일치하지 않기 때문에 결과값은 '0'이된다. - select locate('kyoe','qqkyoeqq'); 위와 같이 sql문을 작성하면 반환되는 값은 3이 된다. 'kyoe'라는문자가 'qqkyoeqq'에 속해있기때문에 그결과는 참이되고 문자'kyoe'의 위치를..

。공부 。 2007.11.24

<C++> 함수오버로딩,디폴트매개변수

C언어 에선 '함수오버로딩'이란것이 존재하지 않는다 C언어 컴파일러는 함수이름만을 보고 컴파일할뿐이지 함수의 매개변수 갯수와 매개변수 타입이 어떤것지는 구분하지 않기 때문이다 하지만 C++컴파일러는 매개변수의 갯수와 매개변수 타입을 구분할줄 안다 이렇게 컴파일러가 업그레이드 되면서 C++에선 '함수 오버로딩'이란것을 할수있게 된다. 함수 오버로딩이란 함수 이름은 같아도 함수의 매개변수타입 또는 매개변수의 갯수의 따라 함수의 호출을 달리 할수있는것을 말한다. - 오버로딩을 사용한예 - #include using std::cout; using std::cin; using std::endl; int function(int num=10){ //디폴트매개변수 지정 변수값은 10 num +=10; return nu..

。공부 。 2007.11.21

<C++> 편의를 위한 Using 의 쓰임

Using 란 사용하겠다라는 건데 이걸 C++에서는 어떻게 쓸까? namespace를 사용해 이름공간이라는것을 만들수 있다 이 이름공간이라는 것을 만들어 사용하기 위해선 반드시 namespace(이름공간)의 이름을 붙여줘한다 하지만 매번 AA::function() 이런식으로 붙여쓰면 코딩도 지저분해질뿐더러 왠지 지저분해 보인다. 물론 그렇게 쓰는게 나쁘다는것은 아니다 나중에 길어진 소스를 해석할땐 오히려 붙여쓰는게 해석할때 도움이 될수도 있기때문이다. - Using 의 사용예 - #include namespace A_kyoe{ //A_kyoe이라는 이름 공간 void function(void){ std::cout

。공부 。 2007.11.21