>정적멤버 = 전역변수와 비슷한 것.
클래스 안에 들어가는 것.
정적맴버는 모든 객체가 공유하는 멤버변수다.
클래스안에 들어가는 맴버변수 이기는 하다.
>형식
clas A
{
static int val;
}
int A::val = 0; //class 밖에서 정적 맴버 변수를 초기화해야 한다.
//class를 만들기 전에 만들어진다.?
맴버변수는 stack에 저장
정적멤버는 데이터 영역에 저장
코드는 stack에 생성되어 정적멤버를 바라보는 것이다.
여러객체가 정적멤버를 바라보고 있는 것이다.
#include <iostream>
#include <string>
using namespace std;
class Student
{
public:
string name;
int sNo;
Student(const string& name_arg, int stdNumber);
~Student();
public:
static int student_count;
static void PrintStdCount();
};
int Student::student_count = 0;
void Student::PrintStdCount()
{
cout << "Student 객체수=" << student_count << "\n";
}
Student::Student(const string& name_arg, int stdNumber) //생성자
{
student_count++;
name = name_arg;
sNo = stdNumber;\
}
Student::~Student() //소멸자
{
student_count--;
}
void Func()
{
Student std1("Bill",342); //std객체 생성
Student std2("James" , 214); //std객체 생성
Student::PrintStdCount(); /객체3 Func함수가 사라짐.
}
int main()
{
Student::PrintStdCount(); //Student 클래스에 있는 함수호출
//public , 정적멤버라 바로 호출가능 >>객체를 만들 필요없이 접근가능.
Student std("Jeffrey" , 123); //객체 1
Student::PrintStdCount();
Func(); //객체
Student::PrintStdCount(); //1
return 0;
}
정적멤버는 바로 호출가능
객체를
만들
필요없이
접근가능.
정적멤버는
객체의
소유가
아니라
클래스의
소유라는
점 파악.
>하나의 파일을 두 개의 소스파일과 하나의 헤더파일로 나눠서 컴파일하기.
일단 밑에와 같이 나눈 후에 리눅스에서는 g++ -o main main.cpp student.cpp를 입력하면 되고 윈도우에서는 cl main.cpp student.cpp로 입력하면 컴파일 된다. 실행파일은 뒤에 있는 파일로 컴파일된다. 여기서는 student.exe로 컴파일 된다.
<헤더파일>
//student.h
#ifndef STUDENT_H
#define STUDENT_H
#include <string>
using namespace std;
class Student
{
public:
Student(const string& name_arg, int stdNumber);
~ Student();
static int student_count;
static void PrintStdCount();
private:
string name;
int sNo;
};
#endif
<main.cpp 파일>
#include <iostream>
#include <string>
#include "student.h"
using namespace std;
void Func()
{
Student std1("Bill", 342);
Student std2("James", 214);
Student::PrintStdCount();
}
int main()
{
Student::PrintStdCount();
Student std("Jeffrey",123);
Student::PrintStdCount();
Func();
Student::PrintStdCount();
return 0;
}
<student.cpp 파일>
//student.cpp
#include "student.h"
#include <iostream>
#include <string>
int Student::student_count = 0;
void Student::PrintStdCount()
{
cout<<"Student 객체 수= "<<student_count <<"\n";
}
Student::Student(const string& name_arg, int stdNumber)
{
student_count++;
name = name_arg;
sNo = stdNumber;
}
Student::~Student()
{
student_count--;
}
'About 프로그래밍!!! > C++' 카테고리의 다른 글
[C++] 과제 4 객체로 작성하기. (0) | 2010.06.21 |
---|---|
[C++]더블포인트, 과제4 풀이 및 클래스의 정의 (0) | 2010.06.19 |
[C++]접근제어 (0) | 2010.06.17 |
문자 비트변환 후 켜진비트셈, 소수판별,로또번호 (0) | 2010.06.16 |
(0) | 2010.06.16 |