일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 코테
- spring boot
- 프로그래머스
- 카카오
- 컴포넌트스캔
- @Autowired
- thymeleaf
- python
- C언어
- 구조체배열
- Spring
- 스프링
- nestjs typeorm
- 카카오 코테
- AWS
- git
- OpenCV
- 알고리즘
- TypeORM
- 파이썬
- 카카오 알고리즘
- Nodejs
- nestjs auth
- 코딩테스트
- 시스템호출
- 해시
- C++
- @Component
- 가상면접사례로배우는대규모시스템설계기초
- nestJS
Archives
- Today
- Total
공부 기록장 💻
[C/C++] const 지정자 본문
명품 C++ 프로그래밍 5장 실습 #11번
main 함수로부터 포인터(문자 배열)를 입력 받아
기존의 값을 변경하는 set함수에서
포인터 매개 변수 값에 const 지정자를 붙이는 것에 의문이 들었다.
void set(const char* title, int price) {
//cout << "set 함수 실행" << endl;
if (this->title) delete[] this->title; // 할당된 메모리가 있다면 반환한후
int len = strlen(title);
this->title = new char[len + 1]; // 새로운 메모리 다시 할당
strcpy(this->title, title);
this->price = price;
}
void show() { cout << title << ' ' << price << "원" << endl; }
};
첫번째 매개 변수 char * title앞에 const 지정자가 붙었다.
#include <iostream>
#include <string>
using namespace std;
class Book {
char* title;
int price;
public:
Book(const char* title, int price) {
//cout << "생성자 실행" << endl;
int len = strlen(title);
this->title = new char[len + 1];
strcpy(this->title, title);
this->price = price;
}
Book(const Book& b) {
//cout << "복사 생성자 실행" << endl;
int len = strlen(b.title);
this->title = new char[len+1];
strcpy(this->title, b.title);
this->price = b.price;
}
~Book() {
if (this->title) {
//cout << "동적 메모리 반환" << endl;
delete[]title;
}
}
void set(const char* title, int price) {
//cout << "set 함수 실행" << endl;
if (this->title) delete[] this->title; // 할당된 메모리가 있다면 반환한후
int len = strlen(title);
this->title = new char[len + 1]; // 새로운 메모리 다시 할당
strcpy(this->title, title);
this->price = price;
}
void show() { cout << title << ' ' << price << "원" << endl; }
};
int main() {
Book cpp("명품C++", 10000);
Book java = cpp; // 복사 생성자 호출
java.set("명품자바", 12000);
cpp.show();
java.show();
}
다음은 const 지정자의 위치에 따라 어떤 차이가 있는지에 대해 설명하는 글이다.
jacking75.github.io/cpp_const_pointer/
728x90
반응형
'# Language & Tools > C++' 카테고리의 다른 글
[C++] 중간고사 목차 정리 (0) | 2021.04.18 |
---|---|
[C++] 함수 중복/오버로드(function overload)와 모호성 (0) | 2021.04.15 |
명품 C++ Programming 6장 실습 문제 - 함수/생성자 중복 정의, 디폴트 매개 변수, static 멤버, 참조 매개 변수, 난수 생성 (0) | 2021.04.15 |
[C++] 함수 중복 / 오버로딩 (Function Overloading), 디폴트 매개 변수 (Default Parameter), static 멤버 (0) | 2021.04.15 |
명품 C++ Programming 5장 실습 문제 - 참조 매개 변수, 참조 객체, 복사 생성자, 참조 리턴 (0) | 2021.04.14 |
Comments