#include<iostream>
#include<string> // <<
using namespace std;
class Student
{
public:
string name;
int sNo;
void Print();
private:
Student(const string& name_arg, int stdNumber);
public:
static int studentNumber;
static Student* CreateStudent(const string& name_arg);
};
int Student::studentNumber = 0;
// 정적 멤버 변수는 보통의 멤버변수와는 달리 별도로 크래스외부에서 정의해주어야 한다. 오직 하나만 생성되기 때문에 이렇게 별도로 정의.
Student* Student::CreateStudent(const string& name_arg)
{
Student* p = new Student(name_arg, studentNumber++);
return p;
}
Student::Student(const string& name_arg, int stdNumber)
{
name = name_arg;
sNo = studentNumber;
}
void Student::Print()
{
cout << "name = " << name << " sNo = " << sNo << endl;
}
int main()
{
Student* p1, *p2, *p3;
p1 = Student::CreateStudent("오유");
p2 = Student::CreateStudent("디씨");
p3 = Student::CreateStudent("웃대");
p1->Print();
p2->Print();
p3->Print();
딜리트(영어로하면 글쓰기가 안되서..) p1, p2, p3;
p1 = p2 = p3 = 0;
return 0;
}
생성자를 이용해서 객체를 정의해야하는데 생성자가 private라서
정적 멤버함수 내에서 동적 할당을 해서 주소을 리턴하잖아요. 근데
static int studentNumber;
이거는 인트타입 정적멤버변수 스튜던트넘버를 선언하고..
static Student* CreateStudent(const string& name_arg);
이거는 Student* 형 멤버함수???
이게 뭔지 왜쓰는지 완전 모르겠네요
제발 알려주세요ㅠㅠ