C++에서 기본적인 포인터 관련해서 질문 드립니다..
글쓴이: wildwar / 작성시간: 금, 2017/07/21 - 3:49오후
class A {
public :
A() {
setName("AA");
};
void setName(string a) {
name = a;
};
string get() { return name; };
private:
string name;
};
class B : public A
{
public :
B() : A() { setName("BB"); };
};
void func(A* cla)
{
cout << cla << endl; // 2번
cla = new B();
cout << cla << endl; // 3번
}
int main()
{
A * aaaa = new A();
cout << aaaa << endl; // 1번
func(aaaa);
cout << aaaa << endl; // 4번
}코드는 위와 같고,
출력시에는
1, 2, 4번은 동일한 주소, 3번은 다른 주소가 나옵니다.
메모리 관점에서 좋지 않은 코드인건 알지만 실행시켰을 때 제 생각과 다른 결과가 나와서 질문드립니다.
저는 위 코드에서 func 함수로 넘어 갈 때 포인터형 객체를 넘겨주기 때문에
func함수내의 ' cla = new B(); ' 구문에서 새로운 주소값을 할당하고 리턴이 되어도
메인에서 새로운 주소값이 지정되어 있어야 한다고 생각했습니다.
그래서 마지막에 결과가 제 생각과 다르게 나오는 이유를 아무리 생각해도 모르겠는데... 답변주시면 정말 감사하겠습니다.
( 비쥬얼 스튜디오로 작성하였습니다. )
Forums:


https://kldp.org/comment
https://kldp.org/comment/623559#comment-623559
댓글 달기