게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C++ Class 정적멤버함수 내 동적객체 생성 질문이요ㅠㅠ
게시물ID : programmer_1166짧은주소 복사하기
작성자 : 익명이요
추천 : 0
조회수 : 705회
댓글수 : 12개
등록시간 : 2014/02/12 17:06:08
#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* 형 멤버함수??? 
이게 뭔지 왜쓰는지 완전 모르겠네요
제발 알려주세요ㅠㅠ

전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호