1. : 초기화
/* 예제 6-1.cpp */
#include<iostream>
using namespace std;
class Student {
 const int id; // id를 상수화
 int age;
 char name[20];
 char major[30];
public:
 Student(int _id, int _age, char* _name, char* _major) : id(_id){
  //id=_id; // 에러 발생
  age=_age;
  strcpy(name, _name);
  strcpy(major, _major);
 }
 void ShowData() {
  cout<<"이름: "<<name<<endl;
  cout<<"나이: "<<age<<endl;
  cout<<"학번: "<<id<<endl;
  cout<<"학과: "<<major<<endl;
 }
};
int main() {
 Student Kim(200577065, 20, "Hong Gil Dong", "Computer Eng.");
 Student Hong(200512065,19,"Kim Sam Soon","Electronics Eng.");
 Kim.ShowData();
 cout<<endl;
 Hong.ShowData();
 return 0;
}

--> 콜론초기화는 위와캍이 const 멤버변수를 초기화 시킬수 있다.


2. const 함수
#include <iostream>
using namespace std;
class Count {
 int cnt;
public :
 Count() : cnt(0){}
 // 이와같이 const 가 맨 앞에 있으면 리턴되는 cnt 가 const 형태로 넘어간다.
 const int* GetPtr() const{
  return &cnt; // Compile Error
 }
 void Increment(){
  cnt++;
 }
 void ShowData() const {
  ShowIntro(); // Compile Error
  cout<<cnt<<endl;
 }
 void ShowIntro() const {
  cout<<"현재 count의 값 : "<<endl;
 }
};
int main()
{
 Count count;
 count.Increment();
 count.ShowData();
 return 0;
}

--> const 함수는 그 안에서 멤버변수를 변경할수 없다.
      그리고 const 함수가 아닌 함수는 호출할수 없다.

3. const 객체
// 예제 6-4.cpp const 객체 예제
#include<iostream>
using namespace std;
class Student
{
 int id;
 int age;
 char name[20];
 char major[30];
public:
 Student(int _id, int _age, char* _name, char* _major)
 {
  id=_id;
  age=_age;
  strcpy(name, _name);
  strcpy(major, _major);
 }
 void SetMajor(char * _major){
  strcpy(major, _major);
 }
 void ShowData() const
 {
  cout<<"이름: "<<name<<endl;
  cout<<"나이: "<<age<<endl;
  cout<<"학번: "<<id<<endl;
  cout<<"학과: "<<major<<endl;
 }
};
int main()
{
 const Student Kim(200577065, 20, "Kim", "Computer Eng.");
 // Kim.SetMajor("Internet Eng.");
 Kim.ShowData();
 cout<<endl;
 return 0;
}

--> const 객체는 const 가아닌 함수는 호출할수 없다.
      또한 멤버 변수를 변경할수 없다.

4. static 멤버변수
/* 예제 6-6.cpp */
#include<iostream>
using namespace std;
class Student {
 int id;
 int age;
 static int Student_count;
 char name[20];
 char major[30];
public:
 Student(int _id, int _age, char* _name, char* _major) {
  //Student_count = 0; // 초기 0으로 초기화
  id=_id;
  age=_age;
  strcpy(name, _name);
  strcpy(major, _major);
  Student_count++;
  cout << Student_count << " 번째 Student 객체 생성" << endl;
 }
};
int Student::Student_count = 0; // 이와같이 선언되어야 합니다.
int main() {
 Student Kim(200577065, 20, "Kjm", "Computer Eng.");
 Student Cho(200577067, 21, "Cho", "Multimedia Eng.");
 Student Hong(200577068, 22, "Hong", "Internetsoft Eng.");
 return 0;
}
--> static 멤버변수는 위와같이 초기화 되어야지 오류가 안난다.

- 인라인 함수
inline void Func1() {
  cout << "이곳은 인라인 함수1입니다.\n";
}

int main() {
  // inline 함수호출
  count << "인라인 함수 1을 호출"<<endl;
  Func1();
  return 0;
}


--> 인라인 함수는 위와같은 형태로 쓰고 이것은 컴파일될때 그냥 호출되는부분에 포함되게 된다.

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ 강의노트  (54) 2007.05.02
C++ 강의노트 5,6장  (22) 2007.04.24
C++ 6강 강의자료  (24) 2007.04.11
C++ 5강 강의자료  (25) 2007.04.04
C++ 프로그래밍4강  (43) 2007.03.28
C++ 에서 달라진점  (21) 2007.03.21
by cranix 2007.04.11 14:26

- friend 함수예제
// friend 함수의 예
#include<iostream>
using namespace std;
 class myclass {
 int n, d;
public:
 myclass(int i, int j) { n = i; d = j; }
 // myclass의 friend를 선언한다.
 friend int isfactor(myclass ob);
};
/* 다음은 friend 함수의 정의. 이것은 d가 n의 인
수이면 참을 반환한다. 키워드 friend가
isfactor()의 정의에서는 사용되지 않는다는
점에 유의하세요. */
int isfactor(myclass ob) {
 if (!(ob.n % ob.d)) return 1;
 else return 0;
}
int main() {
 myclass ob1(10, 2), ob2(13, 3);
 if (isfactor(ob1)) cout << "2 is a factor of10\n";
 else cout << "2 is not a factor of 10\n";
 if (isfactor(ob2)) cout << "3 is a factor of 13\n";
 else cout << "3 is not a factor of 13\n";
 return 0;
}

- 위에서처럼 friend 함수는 객체의 멤버함수가 아니고 전역함수이다.
  단지 해당 객체의 private 속성의 멤버변수를 얻어낼수 있게 하기위해 지정하는것이다.
- friend 는 클래스로도 가능하고 어떤 클래스의 멤버함수로도 가능하다



실습문제 : 연습문제 5-1, 연습문제 5-5, 연습문제 5-8
일반과제 : 실습문제(은행계좌 Ver2)

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ 강의노트 5,6장  (22) 2007.04.24
C++ 6강 강의자료  (24) 2007.04.11
C++ 5강 강의자료  (25) 2007.04.04
C++ 프로그래밍4강  (43) 2007.03.28
C++ 에서 달라진점  (21) 2007.03.21
C++ 강의노트 3장  (40) 2007.03.21
by cranix 2007.04.04 13:59

강의 PPT



실습 : 연습문제 4-1, 4-3, 4-4
과제 : 연습문제 4-6, 실습문제4-1

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ 6강 강의자료  (24) 2007.04.11
C++ 5강 강의자료  (25) 2007.04.04
C++ 프로그래밍4강  (43) 2007.03.28
C++ 에서 달라진점  (21) 2007.03.21
C++ 강의노트 3장  (40) 2007.03.21
C++ 2강 정리  (19) 2007.03.14
by cranix 2007.03.28 14:16
- include 할때 .h 안넣어도 된다.

- namespace 개념추가

- 함수 초반이 아니더라도 변수 선언가능

- 함수 오버로딩

- 디폴트 매개변수
int function(int a=0) {
  return a+1;
}

- 레퍼런스형태 추가 : ref 형태는 해당 변수의 이름이 두개라고 이해하면된다.
#include <iostream>
using namespace std;
int main(void)
{
 int val = 10;
 int *pVal = &val; // 주소값을 얻기 위해 &연산자 사용
 int &rVal = val; // 레퍼런스 선언을 위해 &연산자 사용
 cout << "val 의 주소: " << &val << endl; //val의 주소값을 출력
 cout << "rVal 의 주소: " << &rVal << endl; // rVal의 주소값출력
 rVal = 15; // 레프런스를 이용한 값의 변경
 cout << "val: " << val << endl;
 cout << "*pVal: " << *pVal << endl;
 cout << "&rVal: " << rVal << endl;
 return 0;
}
 --> 함수에 인자를 넘겨줄때 레퍼런스형태로 넘겨주면 새로운 변수할당 없이 넘길수 있다.


실습시간에 할문제 :
  - 연습문제 3-1,3-2,3-4


과제 :
  - 실습문제1번 숙제 , C 로 짜오자 , 다음주까지

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ 5강 강의자료  (25) 2007.04.04
C++ 프로그래밍4강  (43) 2007.03.28
C++ 에서 달라진점  (21) 2007.03.21
C++ 강의노트 3장  (40) 2007.03.21
C++ 2강 정리  (19) 2007.03.14
C++ 2강 자료  (683) 2007.03.14
by cranix 2007.03.21 16:07
C++ 강의노트 3장

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ 프로그래밍4강  (43) 2007.03.28
C++ 에서 달라진점  (21) 2007.03.21
C++ 강의노트 3장  (40) 2007.03.21
C++ 2강 정리  (19) 2007.03.14
C++ 2강 자료  (683) 2007.03.14
C++프로그래밍  (29) 2007.03.09
by cranix 2007.03.21 13:45

- const 변수가 포인터변수의 앞에오면 포인터가 가리키는 변수의 상수화 한다.

int a=10;
const int* p = &a;
*p = 30;  // Error!
a = 30;   // OK!


- const 가 포인터변수의 뒤에오면 포인터변수 자체를 상수화 한다.
int a=10;
int b=20;
int* const p = &a;
p=&b;  // Error!
*p=30;  // OK!


- 함수포인터
  --> 함수명 자체가 함수포인터 이다.
  --> 함수포인터는 아래와같이 선언한다.
void (*fPtr)(void);
  --> 이런 형태는 아래와같이 포인터를 할당할수 있다.
int Add(void);

fPtr = Add;

- Void 형 포인터
  --> 아무런 형태가 없는 포인터
  --> 사용하기위해서는 아래와같이 형 변환을 해야한다.

int main(void)
{
int n=10;
void *vp = &n ; // void 포인터 선언 및 초기화
*((int*) vp) = 20; // n 값을 변경하기 위해서 int 형 포인터로 형 변환
. . . . .

- 포인터의 포인터 (**)
  --> 포인터의 포인터값을 가르키는 포인터


- malloc 와 free
  --> c++ 로 오면서 new 와 delete 로 바꼈음.
 

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ 에서 달라진점  (21) 2007.03.21
C++ 강의노트 3장  (40) 2007.03.21
C++ 2강 정리  (19) 2007.03.14
C++ 2강 자료  (683) 2007.03.14
C++프로그래밍  (29) 2007.03.09
강의1  (52) 2007.03.07
by cranix 2007.03.14 14:21
2강 pdf 자료

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ 에서 달라진점  (21) 2007.03.21
C++ 강의노트 3장  (40) 2007.03.21
C++ 2강 정리  (19) 2007.03.14
C++ 2강 자료  (683) 2007.03.14
C++프로그래밍  (29) 2007.03.09
강의1  (52) 2007.03.07
by cranix 2007.03.14 14:01
교수님 : 조재수
강의실 : 4B302
조교님 : 권민혁 (멜:mugerc@gmail.com,폰:010-6256-7459)
조교님홈 : http://pllab.kut.ac.kr/~batman/wiki.php
교수님홈 : http://ime.kut.ac.kr/jaesoo
교재 : C++ 프로그래밍
기타사항 :
  - 교재를 사도되고 안사도됨
  - 과제는 조교님홈으로 제출
  - 실습할때는 모든걸끝냈어도 적어도 1시간은 있어야함

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ 에서 달라진점  (21) 2007.03.21
C++ 강의노트 3장  (40) 2007.03.21
C++ 2강 정리  (19) 2007.03.14
C++ 2강 자료  (683) 2007.03.14
C++프로그래밍  (29) 2007.03.09
강의1  (52) 2007.03.07
by cranix 2007.03.09 15:49
강의1

포인터의 이해

'2007년1학기 > C++프로그래밍' 카테고리의 다른 글

C++ 에서 달라진점  (21) 2007.03.21
C++ 강의노트 3장  (40) 2007.03.21
C++ 2강 정리  (19) 2007.03.14
C++ 2강 자료  (683) 2007.03.14
C++프로그래밍  (29) 2007.03.09
강의1  (52) 2007.03.07
by cranix 2007.03.07 14:50
| 1 2 |