Programming Language

Programming Language/C++

객체 치환 및 객체 리턴

객체 치환 객체 치환 시 객체의 모든 데이터가 비트 단위로 복사된다. 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..

Programming Language/C++

함수 호출 시 객체 전달

값에 의한 호출로 객체를 전달할 때 문제점 - 실인자 객체의 크기가 크면 객체를 복사하는 시간이 커지는 단점이 있다. - 객체가 함수에 전달되면, 함수의 매개 변수 객체가 생성되고, 함수가 종료하면 매개 변수 객체가 소멸된다. 매개 변수 객체의 생성자와 소멸자가 모두 실행되지 않는다. 객체를 매개 변수로 가지는 함수의 경우, C++ 컴파일러는 매개 변수 객체의 생성자는 실행되지 않고 소멸자만 실행되도록 컴파일 한다. -왜 매개 변수 객체의 생성자가 실행되지 않도록 컴파일 되는가? >다음 코드는 반지름이 30인 waffle 객체를 생성하고, increase() 함수를 호출하여 waffle 객체를 전달한다. Circle waffle(30); increase(waffle); increase() 함수의 매개 변..

Programming Language/C++

함수의 인자 전달 방식

인자 전달 방식은 값에 의한 호출과 주소에 의한 호출로 나뉜다. --값에 의한 호출-- #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

Programming Language/C++

문자열 다루기

문자열 치환 string a="Java", b="C++"; a=b; 문자열 비교 string name="KItty"; string alias="Kito"; int res=name.compare(alias); //name과 alias를 비교한다.(name이 alias보다 앞에 오면 음수) if(res==0) cout

Programming Language/C++

string 클래스 개요

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 객체가 가진 문자열 출..

Programming Language/C++

this의 기본 개념

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;로 해도 무관함 } 첫째로 멤버 변수의 이름과..

Programming Language/C++

객체 배열의 동적 생성 및 반환

-객체 배열의 동적 생성과 생성자 클래스이름*포인터변수=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..

Programming Language/C++

C++ 동적 메모리 할당 및 반환

C++에서는 동적 메모리 할당 및 반환을 위해 new와 delete 연산자를 이용한다. new 연산자는 힙(heap)이라는 공간으로부터 메모리를 할당받고, delete 연산자는 할당받은 메모리를 힙으로 반환한다. new와 delete의 기본 활용 데이터타입 *포인터변수 = new 데이터타입; delete 포인터변수; new 연산자는 '데이터타입'의 크기만큼 힙으로부터 메모리를 할당받고 주소를 리턴한다. 그 결과 '포인터변수'는 할당받은 메모리의 주소를 가진다. delete 연산자는 '포인터변수'가 가리키는 메모리를 힙으로 반환한다. '데이터타입'은 int,char,double 등 기본 타입뿐 아니라 구조체,클래스도 포함한다. int *pInt=new int; char *pChar=new char; Cir..

JIWANSEO
'Programming Language' 카테고리의 글 목록