카테고리 없음

김민찬 10주차 수업 후 과제

content9349 2025. 11. 5. 15:08

1. const란

const는 **constant(상수)**의 줄임말로, 한 번 값을 정하면 변경할 수 없는 변수를 선언할 때 사용하는 키워드입니다.
언어에 따라 약간의 차이가 있지만, 공통적으로 “값이 변하지 않는다”는 의미를 가집니다.

===========================================================================================

const 정리
1. JavaScript
// const: 재할당 불가, 객체 내부는 변경 가능
const PI = 3.14159;
console.log(PI); // 3.14159
// PI = 3; // 오류
const numbers = [1, 2, 3];
numbers.push(4); // 내부 값 변경 가능
console.log(numbers); // [1, 2, 3, 4]

===========================================================================================

2. C / C++
#include <iostream>
using namespace std;
int main() {
const int MAX = 100;
cout << MAX << endl;
// MAX = 200; // 오류
const double PI = 3.14159;
cout << PI << endl;
// 포인터 사용 예시
const int *p = &MAX; // *p의 값은 변경 불가
int someVar = 10;
int *const q = &someVar; // q의 주소 변경 불가
return 0;
}
===========================================================================================
3. Java
public class Example {
public static void main(String[] args) {
final double PI = 3.14159;
System.out.println(PI);
// PI = 3; // 오류: final 변수는 변경 불가
}
}
===========================================================================================
4. Python
# Python에는 const 키워드가 없음
# 상수처럼 사용하려면 대문자 변수명을 사용
PI = 3.14159
print(PI)
===========================================================================================
#include <iostream>
class Dog {
private:
int age;
};
int main()
{
std::cout << "Hello World!\n";
}
===========================================================================================
#include <iostream>
class Dog {
private:
int age;
public:
int getAge() {
return age;
}
int setAge(int a) {
age = a;
}
};
int main()
{
std::cout << "Hello World!\n";
}

===========================================================================================

#include <iostream>
class Dog {
private:
int age;
public:
Dog() {
}
int getAge() {
return age;
}
int setAge(int a) {
age = a;
}
};
int main()
{
std::cout << "Hello World!\n";
}

===========================================================================================

#include <iostream>
using namespace std;
class Dog {
private:
int age;
public:
Dog(int age);
~Dog();
int getAge() const;
void setAge(int age);
};
Dog::Dog(int age) {
this->age = age;
}
Dog::~Dog() {
cout << "멍멍~\n";
}
int Dog::getAge() const {
return age;
}
void Dog::setAge(int age) {
this->age = age;
}
int main() {
Dog coco(1), coco1(2);
// coco.setAge(2);
return 0;
}

주요 내용

  • class Dog: 강아지 클래스를 정의
  • private int age: 나이를 저장하는 멤버 변수 (외부 직접 접근 불가)
  • Dog(int age): 생성자, 객체 생성 시 나이를 초기화
  • ~Dog(): 소멸자, 객체가 사라질 때 "멍멍~" 출력
  • int getAge() const: 나이를 반환하는 함수, 멤버 변수 변경 안 함
  • void setAge(int age): 나이를 변경하는 함수
  • main():
    • Dog coco(1), coco1(2); 객체 두 개 생성
    • 종료 시 객체 소멸자 호출, "멍멍~" 두 번 출력

===========================================================================================

기말고사 마지막 문제일 확률 높음

코드 설명

구분설명
Cat(int age, string name) 생성자, 객체 생성 시 이름과 나이 초기화, 메시지 출력
~Cat() 소멸자, 객체가 사라질 때 "객체 바이" 메시지 출력
getAge() / getName() 나이와 이름 반환
setAge() / setName() 나이와 이름 변경
meow() 고양이가 우는 메시지 출력
포인터 사용 Cat* pNabi = &nabi;로 객체 주소 접근 가능
main 객체 생성 → 정보 출력 → 포인터 접근 → 정보 변경 → 울음 호출

============================================================================================

const로 지정을 하면 초기값을 변경하면 안된다.
const를 사용하지 않거나 값을 바꾸지 말아야함.
x랑 c는 일반변수
px는 포인터 변수 포인터 변수는 주소만 저장한다

#include <iostream>
int main() {
int x; // 정수형 변수 x 선언
char c = 'A'; // 문자형 변수 c 선언 및 초기화
int *px = &x; // x의 주소를 저장하는 포인터 px
c = 'B'; // 문자 c를 'B'로 변경
x = 10; // x에 10 저장
std::cout << x << *px; // x 값과 px가 가리키는 값 출력
}

코드 설명

코드설명
int x; 정수형 변수 x 선언 (초기값 없음, 아직 쓰레기 값)
char c = 'A'; 문자형 변수 c 선언, 'A'로 초기화
int *px = &x; 포인터 px를 선언하고 x의 주소 저장
c = 'B'; 변수 c 값 변경 (문자 'B')
x = 10; x 값 10으로 설정
std::cout << x << *px; x 값과 포인터 px가 가리키는 값(x) 출력
  • px는 항상 x를 가리키므로, *px의 값은 x와 동일합니다.
  • 따라서 x = 10; 이후 x와 *px 모두 10입니다.

============================================================================================

 

 

지역변수는 스택이라는 메모리 영역에 잡힌다

============================================================================================

#include <iostream>
int main() {
int x=10;
int *px = new int;
std::cout << x;
}

코드 설명

코드설명
int x = 10; 정수형 변수 x 선언 및 초기화. 스택(stack)에 저장됨
int *px = new int; 힙(heap) 영역에 정수형 메모리 4바이트 할당, 포인터 px에 주소 저장
초기값은 쓰레기 값(garbage)임
std::cout << x; x 값 출력 → 10 출력

============================================================================================

#include <iostream>
int main() {
int x=10;
int *px = new int;
*px = 10;
std::cout << px;
}

코드 설명

코드설명
int x = 10; 스택(stack)에 정수형 변수 x 선언 및 10으로 초기화
int *px = new int; 힙(heap)에 정수형 메모리 동적 할당, 주소를 포인터 px에 저장
*px = 10; 포인터 px가 가리키는 힙 메모리에 값 10 저장
std::cout << px; 포인터 px가 가리키는 주소 출력 (메모리 주소, 값 아님)
  • *px → 포인터가 가리키는 값
  • px → 포인터 자체가 가진 주소

============================================================================================

 

new를 쓰면 반드시 delete를 해줘야함