게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
C++] 클래스 생성자 소멸자 관련 질문입니다.
게시물ID : programmer_18942짧은주소 복사하기
작성자 : 훗날닭집사장
추천 : 1
조회수 : 566회
댓글수 : 3개
등록시간 : 2016/11/10 00:28:30
옵션
  • 본인삭제금지
A 클래스 선언
 
class A
{
private:
    string *str;  
...

public:
   A()
   {
      str = new string[10];
...
   }
 ~A()
   {
      delete[] str;
   }
}
B 클래스 선언
 
class B
{
private:
string *str1;
int *arr;
...
 
public:
B()
{
 str1 = new string[10];
arr = new int[10];
}
 
~B()
{
delete[] str1;
delete[] arr;
}
 
C 클래스 선언
 
class C
{
private:
B *queue;
...
 
public:
C()
{
queue = new B[1000];
...
}
~C()
{
delete[] queue;
}
 
 
main 함수
 
void main()
{
...
A *a = new A[1000];
B *b = new B[1000];
....
 
delete[] a;
delete[] b;
}
 
 
 
위 소스코드에서 각 클래스의 생성자, 소멸자와 main내의 new, delete에서 문법상으로 잘못된게 있나요?
 
중간에 소스코드를 많이 생략했지만, 오류가 발생합니다. (C 클래스가 queue의 역할을 하는 클래스인데, queue에 삽입이 제대로 되지를 않습니다.)
 
그래서 임의로 A클래스의 소멸자 (str 배열)을 없애보았더니 오류가 없었습니다.
 
B클래스의 소멸자만 없애도 오류가 없고, C클래스의 소멸자만 없애도 오류가 발생하지 않았구요.
 
main 내에서 a배열은 상관이 없고 b배열에 대한 delete만 삭제해줘도 오류가 발생하지 않았습니다.
 
대체 뭐가 문제일까요..? 혹시 풀 소스코드가 필요하시다면.. 올려보겠습니다만 너무 길어서.. 최대한 축약했습니다.
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호