C++(61)
-
[C++] 8. 함수포인터, 멤버함수 포인터
퍼온 자료이나, 원본주소를 알지 못하겠군요. --------------------------------------------------- 함수포인터, 멤버함수 포인터C++ 2011/03/09 14:46 함수 포인터 함수 포인터를 선언하는 형식: 리턴타입 (* 변수명)(인수목록) int Function(int a) { ... } int main() { int (*pf)(int) = Function; // 이런 초기화및 대입이 가능한 이유는 함수명은 함수의 시작 // 번지를 나타내는 포인터 상수이기 때문이다. 배열명과 같음. // 함수 이름 자체가 포인터 타입이므로 &Function으로 쓸 필요 없다. pf(); // 함수 호출. 엄격하게 따지면 에러이지만, 컴파일러가 이미 함수 포인터라는 걸 // 알고 있..
2011.06.01 -
[C++] 7. 연산자 오버로딩
1. 연산자 오버로딩 2가지 방법 operator 키워드 + 연산자 를 붙여서 함수명을 만들경우 해당 연산자를 오버로딩 하게 된다. ex> Point p1,p2; Point p3 = p1+p2; => p1.operator+(p2) 가 된다. => operator+(p1,p2) 가 된다. class Point { // 멤버 함수에 의한 연산자 오버로딩 void operator+(int value); Point operator+(const Point& p); // 전역함수 연산자 오버로딩 (friend 키워드 사용) // friend를 붙이면 해당 전역함수에서 이클래스의 private 변수/함수에 접근 가능하다. friend Point operator+(const Point&, const Point&) } ..
2011.06.01 -
[C++] 6. 상속
[C++] 상속 1. 상속의 기본 상속을 하게 되면 아래와같이 수행된다. - 메모리 공간 할당( Base 클래스와 Derived 클래스에 대한것 모두) - Base 클래스의 생성자 실행 - Derived 클래스의 생성자 실행 ex> class Student : public Person - 생성자 호출 순서 Base > Derived * 하위 생성자안에 상위 생성자가 명시되어 있지 않으면 디폴트 생성자(Void)가 호출됩니다. - 상위의 생성자를 지정하는 방법 class Person { Person(int value){} } class Student: public Person{ Student(char*name, int value): Person(value) // 이와같이 부모클래스의 생성자를 지정 가능 {..
2011.05.24 -
[C++] 5. 객체에 대한 const,static (클래스 변수, 클래스 함수)
[C++] 기초5 - const,static 1. const 초기화 방법 const int id; int age; Person(int _id, int _age) : id(_id),age(_age) //=> 메모리공간이 할당된후 바로 초기화(생성 자 호출전) { this->id = _id; //=> 생성자가 호출될때 초기화 } 2. const 멤버 함수 const로 생성한 함수내에서는 아래의 규칙을 따른다. - 멤버 변수의 값 변경 허용 안됨 void show() const{ age = 30; // 컴파일 에러, 변경 불가함 } - 멤버 변수 값의 변경에 대한 기회제공도 불가 int* getPtr() const{ // => const int* getPtr* const { 로 고치면 정상 return &ag..
2011.05.24 -
[C++] 4. 복사 생성자
[C++] - 4 1. 초기화 방식 int val = 20; // c 스타일 방식 초기화 AAA a1 = 10; // c++ 에서는 묵시적으로 AAA a1(10); 으로 변환되기때문에 동일하다. int val(20); // c++ 에서는 묵시적으로 int val=20; 으로 변환되개때문에 동일하다. AAA a1(10); // c 스타일 방식 초기화 ex> Person p2 = p1; // 이의미는 Person p2(Person p1) 로 자동변환된다는것을 말한다. 즉, 이 코드가 실행되려면 Person(const Person& p1) 생성자가 존재해야 이상없이 구동된다. 2. 복사생성자 오버로딩을 통한 생성자가 여러개가 존재 * 디폴트 복사 생성자의 문제점: 얕은 복사에 의한 메모리 참조 오류가 발생 할..
2011.05.24 -
[C++] 3. 접근제한자, 클래스와 객체, this
C++ 기초 3 1. Bitwise 정수 변수의 값을 비트만큼 이동시키는 것을 말한다. (shart ,int ,long, char 만 사용가능하다) 비트가 소실되지 않는한 n비트만큼 왼쪽으로 밀면 기존 값*2^n 의 결과가 된다. 오른쪽으로 밀면 기존값/2^n 이 된다. 사용법: unsigned int number = 4; number2; // 1 2. lvalue 의 의미 lvalue란 메모리안에 있는 하나의 어드레스를 지정하는 것입니다. lvalue라고 불리는 이유는 할당문에서 등호의 왼쪽에 나탈수 있기때문에 그렇게 이름지어졌습니다. 3. Struct & Class Struct : 사용자 정의 자료형, 기본 자료형으로 인식해 주지 않는다. 따라서 아래와 같이 사용해야 합니다. typedef 을 하지 ..
2011.05.20 -
[C++] 2. const, 메모리영역, new/delete
C++ 기초2 1. const 키워드 변수를 상수화 시키는 키워드 입니다. - const int n = 10; // n 이라는 value값 자체를 변경불가 - const int* n; // 데이터 상수화, n의 주소값이 가리키는 value값 변경 불가, *n=20 (x) - int* const n; // 포인터 상수화, n의 주소값 변경 불가 - const int* const n; // n의 value와 주소값 모두 변경 불가 2. 메모리 구분 프로그램을 컴파일 하고 실행하면 메모리 공간이 잡히게 됩니다. - 데이터 영역: 전역변수, Static 변수 (프로그램이 종료될때까지 메모리에 존재) - 힙 영역: 런타임에 크기가 결정될수 있는것들을 올리기 위한 공간 프로그래머가 메모리 할당과 해제를 담당합니다...
2011.05.20 -
[C++] 1. iostream, inline, namespace
[C++] 기초 1 1. iostream 표준 입력과 출력에 관련된 api가 존재한다. : 이전 표준 :신규 표준(이전과 구분하기 위하여 .h를 빼고 있다. 2. cout and cin cout입력변수1>>입력변수2>>입력변수3; // 키보드 입력 3. 오버로딩 C : 함수 이름만 가지고 검색하기 때문에 지원을 안한다. C++ : 이름 뿐만 아니라 매개변수도 확인하기 때문에 지원한다. 4. 디폴트 매개변수 매개변수의 값에 설정한 기본값을 설정한다. 헤더파일이나 CPP 함수중 딱 한곳에만 지정한다. 예> 헤더파일에: int Volume(int x, int y=3, int z=5) 를 해야 한다. (반드시 헤더파일 임) int Volume(int x, int y, int z) { return x*y*z; }..
2011.05.19 -
ERROR : fatal error C1010: 미리 컴파일된 헤더를 찾는 동안 예기치 않은 파일의 끝이 나타났습니다.
ERROR : fatal error C1010: 미리 컴파일된 헤더를 찾는 동안 예기치 않은 파일의 끝이 나타났습니다. ERROR / Programming 2011/02/11 14:31 http://blog.naver.com/atj0618/70102748187 fatal error C1010: 미리 컴파일된 헤더를 찾는 동안 예기치 않은 파일의 끝이 나타났습니다. '#include "stdafx.h"'을(를) 소스에 추가하시겠습니까? 위 에러는 Visual Studio의 Precompiled Header 설정때문에 생긴 에러인데 Precompiled Header는 컴파일 하기전에 미리 자주 쓰는 헤더 파일들을 컴파일 해둬서 컴파일 할 때 빠르게 컴파일하려는 것인데 VC++에서 프로젝트를 생성하면 디폴트로..
2010.05.27 -
TCHAR, _tmain, wmain
TCHAR, _tmain, wmain이 뭘까? 일단 질문에 답하기 전 알아두어야 할 것들을 살펴보면... 문자 코드 아스키코드(ASCII CODE) - 미국에서 정의한 문자셋 표준 - 알파벳 26개와 몇몇 확장 문자를 포함해 256개를 넘지 않아 1바이트로 표현 유니코드 (UNICODE) - 영어가 아닌 다른 국가 문자들은 아스키코드 1바이트로 모두 표현하는데 부족하다. - 따라서 2바이트를 유니코드라는 것이 등장, 나타낼 수 있는 문자의 종류도 65,535개에 이르게 된다. 문자셋 표현 방법에 따라 C 프로그래밍 [SBCS(Sinble Byte Character Set)] - 문자를 표현하는데 있어서 1바이트만을 사용 - 아스키코드 기반의 문자열 [MBCS(Multi Byte Character Set)..
2010.05.26