๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋จ ์ด๋?
๊ฐ์ฒด์งํฅ ๊ฐ๋
(์บก์ํ, ์ ๋ณด์๋ ...)
ํ๋ก๊ทธ๋จ ๋ถ์(๊ฐ๊ด์)
์
์ถ๋ ฅ(cin, cout)
ํด๋์ค(์ธ์คํด์ค) ๊ด๊ณ, ๊ตฌ์ฑ
๊ฐ์ฒด (์ฌ์ฉ) ๋์ ์์ฑ/์ ์ ์์ฑ
์ ๊ทผ์ ์ด (public, private, protected)
๋ฉค๋ฒ ๋ณ์/ํจ์ ์ธ๋ถ์ ์
์ค๋ฒ๋ก๋ฉ(์์ฑ์)/ ์ค๋ฒ๋ผ์ด๋ฉ
UML
์์ฑ์/์๋ฉธ์ (์์)
๋ฉค๋ฒ ์ด๊ธฐํ(์์ ์ด๊ธฐํ , ์ด๊ธฐํ ๋ฐฉ๋ฒ 3๊ฐ์ง.)
this ํฌ์ธํฐ
์ ์ ๋ฉค๋ฒ(static)
์์
๋ถ๋ชจ์์ฑ์ ๋ช
์์ ํธ์ถ
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋จ ์ด๋?
๋ฐ์ดํฐ์ ํจ์๋ฅผ ํ๋์ ๋ฉ์ด๋ฆฌ๋ก ๋ฌถ์ด์ ์๊ฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ฐ์ดํฐ์ ํจ์๋ฅผ ๊ฐ์ฒด๋ก ๋ฌถ๋ ๊ฒ์ ์บก์ํ(encapsulation)๋ผ๊ณ ๋ถ๋ฅธ๋ค.
- ๋ฐ์ดํฐ ์๊ณ ๋ฆฌ์ฆ ๋ ๋ค ์ค์ํด์ง
- ๋ฐ์ดํฐ ์๊ณ ๋ฆฌ์ฆ์ class๋ก ๋ฌถ์ด์ ๊ฐ์ฒด๋ผ๊ณ ๋ถ๋ฆ
- ๊ฐ์ฒด = ์ค์ ์ธ๊ณ๋ฅผ ๋ชจ๋ธ๋งํจ
๊ฐ์ฒด์งํฅ์ ์ต์ข
๋ชฉํ
- ์ฝ๋์ ์ฌ์ฌ์ฉ
๊ฐ์ฒด์งํฅ
- ์ค์ ์ธ๊ณ๋ฅผ ๋ชจ๋ธ๋งํด์ ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ
๊ฐ์ฒด
- ๊ฐ์ฒด๋ ์ํ์ ๋์์ ๊ฐ์ง๊ณ ์์
- ๊ฐ์ฒด ์ํstate = ์์ฑ (๋ณ์ํ์
- ๋์ behavior = ๊ฐ์ฒด๊ฐ ์ทจํ ์ ์๋ ๋์ (ํจ์
ํด๋์ค
- ํด๋์ค๋ ๊ฐ์ฒด๋ฅผ ๋ง๋ค๊ธฐ ์ํ
- ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ์ค๊ณ๋
์ธ์คํด์ค
- ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง ๊ฐ์ฒด๋ค์ ๊ทธ ํด๋์ค์ ์ธ์คํด์ค
๊ฐ์ฒด์งํฅ ๊ฐ๋
(์บก์ํ, ์ ๋ณด์๋ ...)
- 1์บก์ํ ::๋ฐ์ดํฐ์ ํจ์(์ฐ์ฐ)๋ฅผ ๊ฐ์ฒด ์์ ๋ฃ์ด ๋ฌถ๋ ๊ฒ
- 2์ ๋ณด์๋:: private ๊ฐ์ฒด ๋ด๋ถ์ ๋ฐ์ดํฐ์ ๊ตฌํ์ ์ธ๋ถ ์ฌํญ์ ์ธ๋ถ ์ธ๊ณ์์ ๊ฐ์ถ๋ ๊ฒ
- 3์์::๋ถ๋ชจํด๋์ค๋ฅผ ์ด์ด๋ฐ์
๊ธฐ์กด์ ์ฝ๋๋ฅผ ์ฌํ์ฉํ๊ธฐ ์ํ ๊ธฐ๋ฒ,
์ด๋ฏธ ์์ฑ๋ ํด๋์ค(๋ถ๋ชจํด๋์ค)๋ฅผ ์ด์ด ๋ฐ์์ ์๋ก์ด ํด๋์ค (์์ ํด๋์ค) ๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฒ
- 4๋คํ์ฑ:: ๊ฐ์ฒด์ ๋์์ด ์ํฉ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง
๊ฐ์ฒด๊ฐ ์ทจํ๋ ๋์ํ ์ํฉ์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๋ ๊ฒ์ ์๋ฏธํ๋ค -> ํจ์ ์ด๋ฆ์ ์ฌ์ฌ์ฉ
ํ๋ก๊ทธ๋จ ๋ถ์(๊ฐ๊ด์)
์ ์ถ๋ ฅ(cin, cout)
C++์์๋ ์ฝ์ ์
๋ ฅ์ cin ๊ฐ์ฒด๊ฐ, ์ฝ์ ์ถ๋ ฅ์ cout ๊ฐ์ฒด๊ฐ ๋ด๋น
์ด๋ค์ ๋ชจ๋ iostream ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ํฌํจ
# Cout ๊ฐ์ฒด
- ๋ค์ํ ๋ฐ์ดํฐ ์ถ๋ ฅ
- << ์ฝ์
์ฐ์ฐ์
- cout << ์ถ๋ ฅ๋ฐ์ดํฐ ;
# Cin ๊ฐ์ฒด
- ๋ค์ํ ๋ฐ์ดํฐ ์
๋ ฅ ๋ฐ์
- >> ์ถ์ถ ์ฐ์ฐ์
- cin >> ์ ์ฅํ ๋ณ์;
cin >> num; //์
๋ ฅ
cout << "๋ฒํธ๋ : " << num << "์
๋๋ค" << endl; // ์ถ๋ ฅ
#include<iostream>
using namespace std;
int main() {
printf("hello pc\n");
std::cout << "hello\n pc" << std::endl;
cout << "hello pc" << endl;
}
/* #include<stdio.h>
int main() {
printf("hellp PC\n");
return 0;
}
*/
//์ฃผ์ ์ฒ๋ฆฌ ๋จ์ถํค
//#include<math.h>
//C์ธ์ด ๊ฐ์ ์๋ฃ C99 1999 ์ ์๋ฐ๋
//C++ 3๋
๋ง๋ค ๊ฐ์ ์ด ๋จ (๋ค๋ฅผ์์์)
#include<iostream> //input output ํ๋ฅด๋ค, ํค๋ํ์ผ
using namespace std; //๊ธฐ๋ณธ์ ์ผ๋ก ์จ์ค๋ค , ์ด๋ฆ๊ณต๊ฐ์ค์
void main() { // void . ๋ฆฌํด์ , ํจ์์ ์ธ
printf("hellp PC\n");
//์๋ฆฟ์ ๋ง์ถ๋
cout << "hello PC" << endl;
//ํ๋ฆฐํธf ์ /n = endl = ์๋ฆฟ์ ๋ง์ถ ํ์ ์์ ๋
//์๋ฌด๊ฑฐ๋ ์ฌ์ฉํด๋๋จ
cout << "hello PC"; //์ฝ์์์ == ์ถ๋ ฅ
cout << "hello PC" << endl;
cout << "hello PC" << endl;
cout << "hello" << "PC\n" << endl << "white" << endl;
//cin ์
๋ ฅ
int num;
printf("๋ฒํธ๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์: ");
cin >> num; // ํ์ดํ >> num ์์ผ๋ก ๋ค์ด๊ฐ
//scanf ์์์ง์ ์(ํ์)๊ฐ ์์๋๋ฐ ์์ด์ง
//C++์ ํ์์ ์์ฐ ์๋์ผ๋ก ์ฝ์ด์ด
cout << "๋ฒํธ๋ : " << num << "์
๋๋ค" << endl; // ํ์ดํ << ๋ฐ์ผ๋ก ์ถ๋ ฅ
// return;
}
โโโโํด๋์ค(์ธ์คํด์ค) ๊ด๊ณ, ๊ตฌ์ฑ ###์ฃผ๊ด์ 1๋ฌธ์
ํด๋์ค(class): ๊ฐ์ฒด๋ฅผ ๋ง๋๋ ์ค๊ณ๋
ํด๋์ค๋ก๋ถํฐ ๋ง๋ค์ด์ง๋ ๊ฐ๊ฐ์ ๊ฐ์ฒด๋ฅผ ํน๋ณํ ๊ทธ ํด๋์ค์ ์ธ์คํด์ค (instance)๋ผ๊ณ ๋ ํ๋ค.
class Car {}; // Car ํด๋์ค ์์ฑ = ํ์
Car c1, c2; // Car ํ์
๋ณ์ ์ ์ธ = ๊ฐ์ฒด ์์ฑ
c1.speed = 50; //๋ฉค๋ฒ ๋ณ์ ์ ๊ทผ = (.) ๋ํธ ์ฐ์ฐ์ ์ฌ์ฉ
c1.gear = 3;
c1.start();
c1.view();
๊ฐ์ฒด (์ฌ์ฉ) ๋์ ์์ฑ/์ ์ ์์ฑ
ํด๋์ค = ํ์
int main(void) {
//์ ์ ์์ฑ
Car myCar;
myCar.view();
//๋์ ์์ฑ new ์ delete ์ฌ์ฉ
Car* myCar = new Car(); //ํฌ์ธํฐ ๋ฉ๋ชจ๋ฆฌ์์น์ ์ฐจ์ด
myCar->speed;
myCar->view(); //๋ฉ๋ชจ๋ฆฌ ๋์๊ฐ ์๊ธฐ๋๊น
if (!myCar) //ํด์ ์ฌ๋ฌ๋ฒํด๋ฒ๋ฆฌ๋ฉด ๋ฌธ์ ์๊ธฐ๋๊น ์กฐ๊ฑด์ ๋ฃ์ด์ค๋ค.
delete myCar; //๋ฉ๋ชจ๋ฆฌ ํด์ ์์ผ์ค์ผํจ
}
์ ๊ทผ์ ์ด (public, private, protected)
#include<iostream>
using namespace std;
#private (๋ํดํธ) ์ ์ฉ๋ฉค๋ฒ-ํด๋์ค ์์์๋ง ์ฌ์ฉ๊ฐ๋ฅ
class Car {
private: //๋ฐ์ดํฐ ํ์ฌ ์ํ ๊ฐ์ ์ ๊ทผ ์๋๊ฒ ์ฃผ์
//๊ธฐ๋ณธ ๊ฐ์ private
string color = "white";
int speed = 0;
int gear = 0;
# public ๊ณต์ฉ๋ฉค๋ฒ-์ด๋์๋ ์ง ๊ฐ์ฒด๋ฅผ ํตํ์ฌ ์ฌ์ฉ๊ฐ๋ฅ
public:
void speedUp() { //ํจ์๋ฅผ ํตํด์ ์ ์ฝ์ ๊ฑด๋ค.(์กฐ๊ฑดํต์ )
//๋ณ์๋ก๋ ์กฐ๊ฑดํต์ ๊ฐ ๋ถ๊ฐ๋ฅํจ
if (speed > 100)
speed = 0;
else
speed += 10;
}
void speedDown() {
if (speed < 0)
speed = 0;
else
speed -= 10;
}
void view() {
cout << "speed = " << speed << endl;
cout << "gear = " << gear << endl;
cout << "color = " << color << endl;
}
};
# protected
์์๊ด๊ณ์์ ๋ถ๋ชจํด๋์ค์์ ํ์๋ ์์ํด๋์ค๊ฐ
๋ถ๋ชจํด๋์ค์ ๋ณดํธ๋ฉค๋ฒ๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
class Emp {
int rrn;
protected:
int salary;
public:
string name;
void setSalart(int salary);
int getSaltry();
};
class Manager : public Emp {
int bonus;
public:
Manager(int b = 0) : bonus(b) {}
void modify(int s, int b);//ํจ์์ํ ์ธ๋ถ์ ์
void display();
};
void Manager::modify(int s, int b) { //ํจ์ ์ธ๋ถ์ ์
salary = s;
bonus = b;
}
};
๋ฉค๋ฒ ๋ณ์/ํจ์ ์ธ๋ถ์ ์
class Cat {
void setEat(int e); // 5.ํจ์ ์ธ๋ถ ์ ์ - ์ํ
};
void Cat::setEat(int e) { // 5.ํจ์ ์ธ๋ถ ์ ์
~~
}
๋ฉค๋ฒ ํจ์๊ฐ ํด๋์ค ๋ด๋ถ์ ์ ์๋๋ฉด ์๋์ ์ผ๋ก ์ธ๋ผ์ธ(inline) ํจ์๊ฐ ๋
๋ค.
๏ต ๋ฉค๋ฒ ํจ์๊ฐ ํด๋์ค ์ธ๋ถ์ ์ ์๋๋ฉด ์ผ๋ฐ์ ์ธ ํจ์์ ๋์ผํ๊ฒ ํธ์ถํ๋ค
#pragma once
#include<iostream>
using namespace std;
class Cat { //1.๊ณ ์์ด ํด๋์ค ๋ง๋ค๊ธฐ
string name; //2.๋ฉค๋ฒ๋ณ์๋ง๋ค๊ธฐ
bool sleep;
int age;
int hungry;
string meow;
string meow2;
public:
Cat() { //7.์์ฑ์ ๋ง๋ค๊ธฐ (์์ฑ์ 1๋ฒ , ๋ด๋ถ์ ์)
name = "NABI";
sleep = 0;
age = 0;
hungry = 0;
meow = "...";
meow2 = "...";
}
//Cat(int a); //7.์์ฑ์ ๋ง๋ค๊ธฐ (<์ค๋ณต์์ฑ์> ๋งค๊ฐ๋ณ์ ์๋ ์์ฑ์ 2๋ฒ , ์ธ๋ถ์ ์)
void setName(string n) { //2.๋ฉค๋ฒํจ์๋ง๋ค๊ธฐ , 3. set์ค์ ์
name = n;
};
string getName() { // 3.get์ ๊ทผ์
return name;
};
void setAge(int a) {
age = a;
}
/* void setAge(double a) { //11. double ๊ฐ๋ค์ด์ค๋ฉด ๋ฐ์ฌ๋ฆผํ๊ธฐ
age = a;
age = ceil(a);
} */
int getAge() {
return age;
}
void setSleepOn() {
sleep = true;
meow = "Zzzz...";
};
void setSleepOff() {
sleep = false;
meow = "์ผ์ด๋ฌ์ด์.";
setAttractOn();
};
void setEat(int e); // 5.ํจ์ ์ธ๋ถ ์ ์
int getEat() {
return hungry;
}
void setAttractOn() {
meow.append("Meow~♥");
}
void setAttractOff() {
meow2.append(" Meow@#@^&#!#!!!!");
}
void view() {
cout << " ======์ํ===== "<< endl;
cout << " ์ด๋ฆ : " << name << endl;
cout << " ๋์ด : " << age << endl;
cout << " ๋ฐฐ๊ณ ํ : " << hungry << endl << endl;
cout << " ======๋ํ===== " << endl;
cout << "๋ :" << name << ", ๋ญํด?" << endl;
cout << name << " : " << meow << endl << endl;
cout << "๋ :" << name << ", ๋ฐฐ๊ณ ํ๋?" << endl;
cout << name << " : " << meow2 << endl;
cout << " =============== " << endl;
}
~Cat() { //์๋ฉธ์
}
};
void Cat::setEat(int e) { // 5.ํจ์ ์ธ๋ถ ์ ์
hungry = e;
if (sleep == false) {
if (e > 8) {
meow2 = "๋ฐฐ๋ถ๋ฌ์";
}
else if (e == 0) {
meow2 = "๋๋ฌด๋๋ฌด ๋ฐฐ๊ณ ํ์";
setAttractOff();
}
else if (0 < e <= 4) {
meow2 = "๋ฐฐ๊ณ ํ์";
}
}
else {
meow2 = "Zzz...";
}
}
/* Cat::Cat(int a) {//7.์์ฑ์ ๋ง๋ค๊ธฐ (<์ค๋ณต์์ฑ์> ๋งค๊ฐ๋ณ์ ์๋ ์์ฑ์ 2๋ฒ , ์ธ๋ถ์ ์)
name = "NABI";
sleep = 0;
age = a;
hungry = 0;
meow = "...";
meow2 = "...";
}
*/
์ค๋ฒ๋ก๋ฉ(์์ฑ์)/ ์ค๋ฒ๋ผ์ด๋ฉ
์ค๋ฒ๋ก๋ฉ = ์ค๋ณต์ ์
class Car {
private:
string color = "RED";
int speed = 0;
int gear = 0;
public:
int getSpeed() { //์ ๊ทผ์
return speed;
}
#๋ฉค๋ฒํจ์ ์ค๋ณต ์ ์(์ค๋ฒ๋ก๋ฉ)๊ฐ ๊ฐ๋ฅ
void setSpeed(int s);
void setSpeed(double s) { cout << "double" << endl; };
void setSpeed(int s, double g) { cout << "int, double" << endl; };
void setSpeed(double s, int g) { cout << "double, int" << endl; };
void setSpeed(string c) { cout << "string" << endl; };
//
c1.setSpeed(); //์ค๋ฅ
c1.setSpeed(10); // ๊ณณ์ด ์ ํด์ ธ์์ ์ค๋ฅ ์๋จ
c1.setSpeed(10,3.5); // ๊ณณ์ด ์ ํด์ ธ์์ ์ค๋ฅ ์๋จ
}
--------------------------------
//๊ณต ์์ฑ์
// ๋ํดํธ ์์ฑ์
//์ธ์๊ฐ ์๋ ์์ฑ์
int getGear();
void setGear(int g) { gear = g; }
int getSpeed() { return speed; }
int Car::getGear() {
return gear;
}
void Car::setSpeed(int s) {
if (speed > 100)
speed = 100;
else
speed = s;
}
์ค๋ฒ๋ผ์ด๋ฉ = ์ฌ์ ์
์ฌ์ ์(overriding): ์์ ํด๋์ค๊ฐ ํ์์ ๋ฐ๋ผ ์์๋ ๋ฉค๋ฒ ํจ์๋ฅผ ๋ค์ ์ ์ํ๋ ๊ฒ
/* ๋ถ๋ชจ ํด๋์ค์ ๋ฉค๋ฒ ํจ์์ ๋์ผํ ์๊ทธ๋์ฒ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
๏ต ์ฆ ๋ฉค๋ฒ ํจ์์ ์ด๋ฆ, ๋ฐํํ, ๋งค๊ฐ ๋ณ์์ ๊ฐ์์ ๋ฐ์ดํฐ ํ์
์ด ์ผ์นํ์ฌ
์ผ ํ๋ค. */
#include <iostream>
#include <string>
using namespace std;
class Car {
public:
int getHp()
{
return 100; // 100๋ง๋ ฅ ๋ฐํ
}
};
class SportsCar :public Car {
public:
int getHp()
{
return 300; // ์ค๋ฒ๋ผ์ด๋ฉ = ์ฌ์ ์
}
};
int main() {
SportsCar sc;
cout << "๋ง๋ ฅ :" << sc.getHp() << endl;
return 0;
}
--------------
int main() {
SportsCar sc;
cout << ":" << sc.Car::getHp() << endl; //์ฌ์ ์ ์ ํจ์ ํธ์ถ
return 0;
}
UML
UML(Unified Modeling Language):
์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๋ ํด๋์ค๋ค ๊ฐ์ ๊ด๊ณ๋ฅผ ๊ทธ๋ฆฌ๊ธฐ ์ํ์ฌ ์ฌ์ฉ
์์ฑ์/์๋ฉธ์ (์์)
๊ฐ์ฒด์ ์์ฑ
์์ฑ์()
๊ฐ์ฒด์ ์ฌ์ฉ
์๋ฉธ์()
๊ฐ์ฒด์ ํ๊ดด
m.blog.naver.com/psychoria/40093564549
์์ฑ์(contructor):
๊ฐ์ฒด๊ฐ ์์ฑ๋ ๋์ ํ๋์๊ฒ ์ด๊ธฐ๊ฐ์ ์ ๊ณตํ๊ณ ํ์ ํ ์ด๊ธฐํ ์ ์ฐจ๋ฅผ ์คํํ๋ ๋ฉค๋ฒ ํจ์
๏ต ํด๋์ค ์ด๋ฆ๊ณผ ๋์ผํ๋ค
๏ต ๋ฐํ๊ฐ์ด ์๋ค.
๏ต ๋ฐ๋์ public ์ด์ด์ผ ํ๋ค.
๏ต ์ค๋ณต ์ ์ํ ์ ์๋ค
-์์ฑ์ ์ธ๋ถ ์ ์
1. ๋ํดํธ ์์ฑ์
2. ๋งค๊ฐ๋ณ์๋ฅผ ๊ฐ์ง๋ ์์ฑ์
3. ์์ฑ์ ์ค๋ณต์ ์
4. ์์ฑ์ ํธ์ถ
5. ์์ฑ์ ํ๋๋ ์ ์ํ์ง ์์ผ๋ฉด,
6. ๋ํดํธ ๋งค๊ฐ๋ณ์
7. ์์ฑ์์์ ๋ค๋ฅธ ์์ฑ์ ํธ์ถ
A(int a, int b){
m_a = a;
m_b = b;
};
A(int a, int b) : m_a(a), m_b(b){ // ์ด๊ธฐํ ๋ฆฌ์คํธ(Member Initialization List)
//๋ ํ ์ผ
};
1. ์์ ๋ฉค๋ฒ ๋ณ์ ์ด๊ธฐํ
class ABC{
public:
const int A;
ABC(int i) : A(i){}
};
2. ๋ ํผ๋ฐ์ค ๋ฉค๋ฒ ๋ณ์ ์ด๊ธฐํ
3. ํฌํจ๋ ๊ฐ์ฒด์ ์ด๊ธฐํ
4. ์์ ๋ฐ์ ๋ฉค๋ฒ ๋ณ์๋ฅผ ์ด๊ธฐํ ํ ๋
์๋ฉธ์๋ ํด๋์ค ์ด๋ฆ์ ~๊ฐ ๋ถ๋๋ค.
๏ต ๊ฐ์ ๋ฐํํ์ง ์๋๋ค.
๏ต public ๋ฉค๋ฒ ํจ์๋ก ์ ์ธ๋๋ค.
๏ต ์๋ฉธ์๋ ๋งค๊ฐ ๋ณ์๋ฅผ ๋ฐ์ง ์๋๋ค.
๏ต ์ค๋ณต ์ ์๋ ๋ถ๊ฐ๋ฅํ๋ค.
1.์๋ฉธ์
~Car() {
}
2.๋ํดํธ ์๋ฉธ์ //ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋ฉธ์ ์ ์ ํ์ง ์์์ผ๋ฉด ์๋์ฝ์
๋์ด์ ํธ์ถ๋จ
public:
Car() {
speed = 100;
gear = 3;
color = "RED";
}
//์์ฑํ ๋ ์ด๊ธฐ๊ฐ ๋ค์ด๊ฐ๊ณ , ์์ฑ์๊ฐ ๋์ํ๋ฉด์ ๊ฐ์ด ๋ค์ด๊ฐ
//์์ฑ์ ์ด๊ธฐํํ ๊ฑฐ๋ฉด ์์ฑํ ๋ ์ด๊ธฐ๊ฐ ์๋ฃ์ด์ค๋๋จ
// ์์ ๋ฐํ๊ฐ xx
public:
Car() {
speed = 100;
gear = 3;
color = "RED";
}
Car(int g) {
speed = 100;
gear = g;
color = "RED";
}
//์์ฑ์๊ฐ ์ฌ๋ฌ๊ฐ๋ผ๋ ๋์ํ๋๊ฑด ์์ฑ์ ๋จ !! 1๊ฐ !!!!!!!!
// ์ธ์
main {
Car c1; // ์ธ์ ์๋
Car c2(20); //์ธ์์๋
์๋์ผ๋ก ๋ง์ถฐ์ ๋ค์ด๊ฐ
ํจ์์ธ๋ฐ ๊ฐ์ฒด ๋ง๋ค๊ฑธ ์ ํ๊ฐ๋ฅ
์ธ๋ถ๋ก ๋นผ๊ธฐ
Car (int g);
Car:: Car(int g) {
speed = 100;
gear = g;
color = "RED";
}
//๊ณต์์ฑ์
//๋ํดํธ ์์ฑ์
Car () {
}
//์ธ์๊ฐ ์๋ ์์ฑ์
Car (int n) {
}
//์๋ฉธ์
~Car() {
}
๋ฉค๋ฒ ์ด๊ธฐํ(์์ ์ด๊ธฐํ , ์ด๊ธฐํ ๋ฐฉ๋ฒ 3๊ฐ์ง.)
1. ์์ ๋ฉค๋ฒ ์ด๊ธฐํ (๋
ํน)
Car(): speed(300) {
}
-------------
Car(int s, int g, string c) : spped(s), gear(g), color(c) {
}
this ํฌ์ธํฐ
this๋ ํ์ฌ ์ฝ๋๋ฅผ ์คํํ๋ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
๋ฉค๋ฒ๋ณ์
#include <iostream>
using namespace std;
class ThisPo {
int n1;
int n2;
public:
//๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ ํด๋์ค์ ๋ฉค๋ฒ ๋ณ์ ๊ตฌ๋ณ๊ฐ๋ฅ
ThisPo(int n1, int n2) {
this->n1 = n1; //this->n1 ๋ฉค๋ฒ๋ณ์
this->n2 = n2;
}
void print()
{
cout << this->n1 << endl;
cout << this->n1 << endl;
}
};
void main() {
ThisPo num(2, 4);
num.print();
return;
}
์ ์ ๋ฉค๋ฒ(static)
์ธ์คํด์ค ๋ณ์(instance variable): ๊ฐ์ฒด๋ง๋ค ํ๋์ฉ ์๋ ๋ณ์
์ ์ ๋ณ์(static variable): ๋ชจ๋ ๊ฐ์ฒด๋ฅผ ํตํ์ด์ ํ๋๋ง ์๋ ๋ณ์
static์ ์ธ๋ถ์์ ์ด๊ธฐํ
class Car {
static int count;
};
int Car::count = 0;
์์
: ๊ธฐ์กด์ ์กด์ฌํ๋ ์ ์ฌํ ํด๋์ค๋ก๋ถํฐ ์์ฑ๊ณผ ๋์์ ์ด์ด๋ฐ๊ณ ์์ ์ด ํ์ํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ
#include <iostream>
#include <string>
using namespace std;
class Car {
int speed = 10;
public:
void setSpeed(int s) {
speed = s;
}
};
class sportCar :public Car { //์์
bool turbo = false;
public:
void setTurbo(int t) {
turbo = t;
}
void view() {
cout << "speed = " << speed << endl;
// ๋ถ๋ชจ ์์์ด๋ผ๊ณ ํด๋ private๋ ์ ๊ทผ ๋ถ๊ฐ๋ฅ speed ์ค๋ฅ ๋ธ
cout << "turbo = " << turbo << endl;
}
};
void main() {
sportCar s1;
s1.speed = 100;
}
๋ถ๋ชจ์์ฑ์ ๋ช
์์ ํธ์ถ
Rectangle::rectangle(int x, int y, int w, int, y) : Shape(x, y) {
}