예제문자열 “123” 앞에 “0” 패딩을 3개 붙이기string a("123");string b = string(3, '0');int paddings = 4;a.insert(0, b); // "000123": 첫째 인수는 삽입하고자하는 위치, 두번째는 삽입하려는 문자열!a.insert(a.size(), string(paddings, '0')); // "0001230000"디버깅아래의 함수를 헷갈리면 안된다. 2번째 매개변수는 문자열이 아니라 문자 리터럴을 사용해야한다. string b = string(3, '0'); // 좋은 예안그러면 문자열의 null캐릭터까지 추가가 되어 패딩으로서의 역할을 하지 못한다.string(paddings, "0"); // 널캐릭터까지 추가되어 패딩이 망가진다.
#1 메모리 할당데이터를 사용하려면 메모리에 올려야한다. 메모리에 올리려면 공간부터 할당을 받아야한다. 스택 메모리에 할당받는 방식을 정적할당, 힙 메모리에 할당받는 방식이 동적할당이다.#2 정적할당정적할당 사용법MyObj o = MyObj(); // 정적할당변수에 객체나 데이터를 저장하는 방식은 대부분 정적할당 방식이다. 정적할당시 객체, 구조체, 혹은 데이터 그 자체를 반환받는다. 즉, 변수에는 데이터 자체가 저장된다.정적할당 사용이유정적할당을 할 경우 스택 메모리에 올라간다. 스택 메모리에 올라간 데이터는 포인터의 도움을 받지 않은 이상에는 스코프를 벗어나서 사용할 수 없다. 즉, 정적할당은 사용되는 스코프가 한정되어 있는 경우, 예를 들어 함수나 객체 내부와 같이 지역변수로 사용할 때처럼 일시적으..
#1 클래스란?사용자가 편의상 정의한 자료형이다. 구조체와 문법이 유사하나 생성자, 소멸자 등이 존재한다. 클래스를 만든다는 것은 새로운 자료형을 사용하겠다는 의미이다.클래스 정의 최종 형태클래스의 기본형태는 다음과 같다.class MyClass // 클래스 선언(헤더){ public: // 접근제한자 MyClass() // 기본생성자 { } MyClass(int number) // 매개변수 생성자 { this->number_= number; } ~MyClass() // 기본소멸자 { } int Increment() // 멤버함수 { ..
#1 구조체란?편의상 관련 있는 데이터와 함수를 묶어놓은 것이다. 클래스와 달리 모든 멤버의 접근제한자는 기본적으로 public이다.#2 구조체 선언하기struct 키워드를 통해 구조체를 선언한다. 구조체에 포함 된 변수와 함수를 멤버변수, 멤버함수라고 한다.struct MyStruct{ // 멤버변수 int first; int second; // 멤버함수 int Sum() { return first + second; }}#3 구조체의 크기 구하기구조체는 최소한 멤버변수의 크기의 합보다 크거나 같다. sizeof()함수를 통해 크기를 알 수 있다. MyStruct a; // 구조체 생성 cout #4 구조체 멤버 호출하기접근연산자(.)를 통해 멤버에 접근한다. 멤버변..
정적할당 vs 동적할당정적할당정적할당이란 프로그램에서 미리 메모리를 할당받는 방식이다. 컴파일 타임에 메모리의 크기와 위치가 결정된다.#include int main() { // 정적 할당: 배열의 크기가 고정되어 있음 int arr[5] = {1, 2, 3, 4, 5}; // 배열 요소 출력 for(int i = 0; i 동적할당동적할당이란 사용자의 지정에 따라 메모리를 할당받는 방식이다. 런타임에 메모리의 크기와 위치가 결정되며 필요에 따라 메모리를 할당받는 것이기 때문에 별도로 메모리 해제도 해야한다.#include int main() { // 동적 할당: 배열의 크기를 런타임에 결정 int n; std::cout > n; // 동적으로 메모리 할당 ..