객체 치환 객체 치환 시 객체의 모든 데이터가 비트 단위로 복사된다. Circle c1(5); Circle c2(30); c1=c2; //c2 객체를 c1 객체에 비트 단위로 복사한다. c1의 반지름이 30이 된다. --c1과 c2는 내용물만 같을 뿐, 별개이다. 객체 치환은 동일한 클래스 타입에 대해서만 적용된다.-- 함수의 객체 리턴 Circle getCircle(){ Circle tmp(30); return tmp; //객체 tmp 리턴 } return 문이 실행되면 tmp의 복사본이 생기고 이 복사본이 getCircle()을 호출한 곳으로 전달. 그 후 tmp는 소멸. 아래는 getCircle() 함수로부터 리턴 되는 객체를 받는 코드이다. Circle c; // c의 반지름은 1 c=getCir..
값에 의한 호출로 객체를 전달할 때 문제점 - 실인자 객체의 크기가 크면 객체를 복사하는 시간이 커지는 단점이 있다. - 객체가 함수에 전달되면, 함수의 매개 변수 객체가 생성되고, 함수가 종료하면 매개 변수 객체가 소멸된다. 매개 변수 객체의 생성자와 소멸자가 모두 실행되지 않는다. 객체를 매개 변수로 가지는 함수의 경우, C++ 컴파일러는 매개 변수 객체의 생성자는 실행되지 않고 소멸자만 실행되도록 컴파일 한다. -왜 매개 변수 객체의 생성자가 실행되지 않도록 컴파일 되는가? >다음 코드는 반지름이 30인 waffle 객체를 생성하고, increase() 함수를 호출하여 waffle 객체를 전달한다. Circle waffle(30); increase(waffle); increase() 함수의 매개 변..
인자 전달 방식은 값에 의한 호출과 주소에 의한 호출로 나뉜다. --값에 의한 호출-- #include using namespace std; void swap(int a,int b){ int tmp; tmp=a; a=b; b=tmp; } int main(){ int m=2, n=9; swap(m,n); cout
string 클래스 개요 string 클래스는 문자열의 크기에 맞추어 스스로 메모리 크기를 조절하므로 사용하기 매우 편리하다. string.str="I love"; // str은 'I', ' ', 'l','o','v','e',' ' 의 7개 문자로 구성 str.append("C++."); //str은 "I love c++" string 객체 생성 string str; string address("부산광역시 사하구 하단동"); string copyAddress(address); char text[]={'L','o','v','e',' ','c','+','+','\0'}; //C스트링 string title(text); // "Love C++"을 가진 string 객체 생성 string 객체가 가진 문자열 출..
this는 객체 자신에 대한 포인터로서 클래스의 멤버 함수 내에서만 사용된다. this는 객체의 멤버 함수가 호출될 때, 컴파일러에 의해 보이지 않게 전달되는 객체에 대한 주소이다. class Circle{ int radius; public: Circle(){ this->radius=1;} Circle(int radius){ this->radius=radius; } void setRadius(int radius){this->radius=radius;} }; this와 객체 각 객체 속의 this는 다른 객체 속의 this와 서로 다른 포인터이다. this가 필요한 경우 Circle(){ this->radius=1; // this->를 생략하고 radius=1;로 해도 무관함 } 첫째로 멤버 변수의 이름과..
-객체 배열의 동적 생성과 생성자 클래스이름*포인터변수=new 클래스이름 [배열크기]; 다음 코드는 4개의 Circle 객체로 구성된 배열을 동적 생성하는 예이다. Circle*pArray = new Circle[3]; //3개의 Circle 객체 배열의 동적 생성 -new를 이용하여 동적으로 배열을 생성할 때, 다음과 같이 매개 변수 있는 생성자를 직접 호출할 수는 없다. Circle *pArray=new Circle[3](30); //구문 오류, 컴파일 오류 ---------------------------------------------------------- 아래와 같이 배열을 각 원소 객체로 초기화 할 수 있다. Circle *pArray= new Circle[3] {Circle(1),Circl..
C++에서는 동적 메모리 할당 및 반환을 위해 new와 delete 연산자를 이용한다. new 연산자는 힙(heap)이라는 공간으로부터 메모리를 할당받고, delete 연산자는 할당받은 메모리를 힙으로 반환한다. new와 delete의 기본 활용 데이터타입 *포인터변수 = new 데이터타입; delete 포인터변수; new 연산자는 '데이터타입'의 크기만큼 힙으로부터 메모리를 할당받고 주소를 리턴한다. 그 결과 '포인터변수'는 할당받은 메모리의 주소를 가진다. delete 연산자는 '포인터변수'가 가리키는 메모리를 힙으로 반환한다. '데이터타입'은 int,char,double 등 기본 타입뿐 아니라 구조체,클래스도 포함한다. int *pInt=new int; char *pChar=new char; Cir..