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
댓글 달기