반응형
클래스
구조체 - 사용자 정의 데이터 타입
- 연관있는 데이터를 하나로 묶음
클래스 = 구조체 + 함수
클래스에 접근제어자를 붙이지 않으면 모두 private 이다
접근 제어자
public 어디서든 접근허용
protected 상속관계에 놓여 있을 때, 유도 클래스에서의 접근허용
private 클래스 내에서만 접근 허용
// 클래스 생성 예시
class Car{
private:
char ID;
int speed;
public:
void showState();
void Accel();
};
주의해야할 점
- 클래스 멤버에 초기값 주지 않기 (객체에서 주기)
Lamp클래스와 User클래스를 만들어거 유저가 램프를 컨트롤하는 프로그램
// 해더파일
#pragma once
#include <string>
class Lamp {
private:
bool m_isOn;
int m_illuminance;
public:
void powerOnOff();
void changeLight();
void showState();
void init();
};
class User {
private:
string m_name;
public:
void turnOnOff(Lamp& lamp);
void changeLight(Lamp& lamp);
void init();
};
#include "lec7_lec_lamp.h"
#include <iostream>
using namespace std;
void Lamp::powerOnOff() {
m_isOn = !m_isOn;
}
void Lamp::changeLight() {
if (m_isOn) {
if (m_illuminance < 3)
m_illuminance++;
else
m_illuminance = 1;
}
showState();
}
void Lamp::showState() {
if (m_isOn)
std::cout << "밝기" << m_illuminance << "\n";
else
std::cout << "전원이 꺼져있습니다" << "\n";
}
void Lamp::init() {
m_isOn = false;
m_illuminance = 1;
}
void User::turnOnOff(Lamp& lamp) {
lamp.powerOnOff();
}
void User::changeLight(Lamp& lamp) {
lamp.changeLight();
}
void User::init() {
m_name = "no";
}
int main() {
Lamp lamp1;
lamp1.init();
Lamp lamp2;
lamp2.init();
Lamp lamp3;
lamp3.init();
User user1;
user1.init();
user1.turnOnOff(lamp2);
user1.turnOnOff(lamp3);
user1.changeLight(lamp2);
}
반응형
'학부내용 예습 > [ 2021 겨울 ] C++' 카테고리의 다른 글
[ C++ ] 9강. 실습, 얕은 복사 (0) | 2022.02.05 |
---|---|
[ 8강 ] 클래스 (const 멤버함수, 생성자, 소멸자) (0) | 2022.02.05 |
[ C++ ] 6강. 동적할당 (0) | 2022.01.28 |
[ C++ ] 5강. 포인터 배열, 문자열 배열, 참조자, 함수 (0) | 2022.01.26 |
[ C++ ]4강. 다차원 배열 / 실습 (0) | 2022.01.23 |