λΆμ°λνκ΅ 2νλ 1νκΈ° μ±ν₯μ κ΅μλμ γC++νλ‘κ·Έλλ°κ³Όμ€μ΅γ κ°μμ μ€μ΅ λ΄μ©μ μ 리ν μ μ₯μμ λλ€.
π C++ μ ν΅ν΄ κ°μ²΄ μ§ν₯μ κ°λ μ μ΄ν΄νκ³ , C++ λꡬλ₯Ό μ¬μ©νμ¬ κ°λ°μ ν©λλ€.
c++ μ λν κΈ°μ΄ νλ‘κ·Έλλ°μ ν©λλ€.
(1) cin, cout
(2) while, if
1. μ΄λ¦κ³Ό μ μ(μ μ)λ₯Ό μ
λ ₯ λ°μμ λ±κΈμ μΆλ ₯νλ€.
2. μμ λλ 100 μ΄κ³Ό κ°μ΄ μ
λ ₯λλ©΄ νλ‘κ·Έλ¨μ μ’
λ£λλ€.
1. C++ μΈμ΄μμ μ
/μΆλ ₯ μ§μμ μν cinκ³Ό coutμ μ¬μ©νλ€.
Typeμ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) Built-in types
(2) string
(3) numeric_limits<T>
1. νμ
μ΄λ¦μ λ¬Έμμ΄λ‘μ μ
λ ₯λ°μμ κ° νμ
μ΄ ννν μ μλ μ΅μκ°κ³Ό μ΅λκ°μ μΆλ ₯νλ€. (μ΄λ, λμλ¬Έμλ₯Ό κ΅¬λΆ X)
2. μ κ³Όμ μ λ°λ³΅μ μΌλ‘ μνλλ€.
3. βquitβ λ¬Έμμ΄μ΄ μ
λ ₯λλ©΄ λ°λ³΅λ¬Έμ μ’
λ£λλ€.
4. λ°λ³΅λ¬Έμ΄ μ’
λ£λλ©΄ κ° νμ
λ³λ‘ μ€μ λ‘ μ
λ ₯λ νμλ₯Ό μΆλ ₯νλ€.
1. C++ μΈμ΄μμ μ
/μΆλ ₯ μ§μμ μν cinκ³Ό coutλ₯Ό μ¬μ©νλ€.
2. λ¬Έμμ΄μ C++μ stringμ μ΄μ©νλ€.
3. numeric_limits<T>λ₯Ό μ΄μ©νλ€.
Typeμ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) new, delete
μ μλ₯Ό μ
λ ₯ λ°κ³ , ν©κ³, νκ· μ κ³μ°νλ νλ‘κ·Έλ¨μ΄λ€.
1. μ΅λ μ
λ ₯ κ°λ₯ν μ μμ κ°μλ₯Ό μ
λ ₯ λ°λλ€.
2. βaddβ λͺ
λ ΉμΌλ‘ μ μλ₯Ό μ
λ ₯νλ€.
3. βsumβ λͺ
λ ΉμΌλ‘ ν©κ³λ₯Ό μΆλ ₯νλ€.
4. βaverageβ λͺ
λ ΉμΌλ‘ νκ· μ μΆλ ₯νλ€. (λ¨ μ
λ ₯λ μ μκ° μλ κ²½μ°μλ β1κ° μ΄μμ μ μκ° μ
λ ₯λμ΄μΌ νλ€βλ₯Ό μΆλ ₯νλ€.)
5. βlistβ λͺ
λ ΉμΌλ‘ μ
λ ₯ μμλλ‘ μ μλ₯Ό μΆλ ₯νλ€.
6. βquitβ λͺ
λ ΉμΌλ‘ νλ‘κ·Έλ¨μ μ’
λ£μν¨λ€.
1. newμ deleteλ₯Ό μ΄μ©ν΄μ μ μλ€μ μ μ₯ν λ©λͺ¨λ¦¬λ₯Ό ν λΉνλ€.
2. βaddβ, βsumβ, βaverageβ, βquitβμ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μλλ€.
3. μ μλ 0λΆν° 100μ¬μ΄μ μ μμ΄λ€. λ§μ½ μ΄ λ²μλ₯Ό λ²μ΄λλ©΄ βScore should be between 0 and 100οΌλ₯Ό μΆλ ₯νλ€.
4. μ§μ ν κ°μ μ΄κ³Όμ μ μκ° μ
λ ₯λλ©΄ βToo many scoresβλ₯Ό μΆλ ₯νλ€.
Type, control structure, function μ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) struct
(2) vector, iterator
1. μ΅λ μ
λ ₯ κ°λ₯ν μ¬λ μλ₯Ό μ
λ ₯ λ°λλ€.
2. μ΄λ¦, κ΅μ΄, μμ΄, μν μ±μ μ μ
λ ₯νλ€.
3. μ
λ ₯ λ°μ μ¬λ μλ§νΌ λ€ μ
λ ₯μ΄ λκ³ λλ©΄, total μμΌλ‘ μΆλ ₯νλ€.
4. μ΄ λ, κ° μ¬λμ total κ°κ³Ό νκ· κ°μ λͺ¨λ μΆλ ₯νλ€.
vector<StudentInfo>
// vector<StudentInfo> μ°Έκ³ .
const int SUBJECT_NO = 3 ;
struct StudentInfo {
string name ;
int scores[SUBJECT_NO] ;
int sum ;
float average ;
} ;
1. vector<StudentInfo> λ₯Ό μ¬μ©νλ€.
2. StudentInfoλ₯Ό μΆλ ₯νλ ν¨μλ₯Ό μ μνλ€.
3. vector<StudentInfo>λ₯Ό μΆλ ₯νλ ν¨μλ₯Ό μ μνλ€.
4. iteratorλ₯Ό μ¬μ©νλ€.
ν¨μ μ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) enum,struct
(2) function call
(3) const parameter
(4) Call by reference
(5) const_iterator
1. ADDλ₯Ό μ¬μ©νμ¬ μ§μ¬κ°νμ κ°λ‘μ μΈλ‘λ₯Ό μ
λ ₯λ°λλ€.
2. PRINTλ₯Ό μ
λ ₯νλ©΄ λͺ¨λ μ§μ¬κ°νλ€μ μΆλ ₯νλ€.
3. SORTλ₯Ό μ
λ ₯νλ©΄ μ§μ¬κ°νμ λμ΄ μμΌλ‘ μΆλ ₯νλ€.
4. CLEARλ₯Ό μ
λ ₯νλ©΄ μ§μ¬κ°νλ€μ΄ λͺ¨λ μμ λλ€.
5. EXITμ μ
λ ₯νλ©΄ νλ‘κ·Έλ¨μ΄ μ’
λ£λλ€.
Rectangle ꡬ쑰체
struct Rectangle {
int width ;
int height ;
} ;
CommandKind enum
enum CommandKind { ADD, SORT, PRINT, CLEAR, EXIT, INVALID} ;
1. Rectangle ꡬ쑰체μ CommandKind enumμ μ¬μ©νλ€.
ν¨μ μ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) enum,struct
(2) function call
(3) const parameter
(4) Call by reference
(5) const_iterator
1. School ν΄λμ€ μμ addStudent(νμ) ν¨μλ‘ νμμ μΆκ°ν©λλ€.
2. School ν΄λμ€ μμ print() ν¨μλ‘ νμμ μΆλ ₯νκ³ ,
3. School ν΄λμ€ μμ sort() ν¨μλ‘ μ μλ³λ‘ νμμ μΆλ ₯ν©λλ€.
4. School ν΄λμ€ μμ findStudentWithName(μ΄λ¦) ν¨μλ‘ νμμ μ°Ύμ 리ν΄ν©λλ€.
4. Student ν΄λμ€ μμ setGPA(μ μ) ν¨μλ‘ νμμ μ μλ₯Ό λ£μ΅λλ€.
5. Student ν΄λμ€ μμ setName(μ΄λ¦) ν¨μλ‘ νμμ μ΄λ¦μ λ£μ΅λλ€.
Student ν΄λμ€μ School ν΄λμ€
class Student {
private:
string name ;
float gpa ;
public:
β¦
} ;
class School {
private:
string schoolName ;
vector<Student> students ;
public:
β¦
} ;
1. Studentμ School ν΄λμ€λ₯Ό μ μνλ€.
ν΄λμ€ μ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) class constructor & destructor
1. MyString ν΄λμ€μ μμ±μμ μλ©Έμλ₯Ό ν΅ν΄ ꡬνν©λλ€.
2. MyString ν΄λμ€μ isEqual(λ¬Έμμ΄) ν¨μλ ν΄λΉ λ¬Έμμ΄μ΄ κ°μμ§ νλ¨ν©λλ€.
3. MyString ν΄λμ€μ print() ν¨μλ λ¬Έμμ΄μ μΆλ ₯ν©λλ€.
MyString ν΄λμ€
class MyString {
char* str ;
int size ;
public:
MyString(const char* const s) β¦
} ;
1. MyString ν΄λμ€λ₯Ό μ μνλ€.
μ€νΌλ μ΄ν° μ€λ²λ‘λ©μ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) operator overloading
1. cin μΌλ‘ matrixλ₯Ό μ
λ ₯λ°μ΅λλ€.
2. + μ°μ°μλ‘ matrix λκ°λ₯Ό λν©λλ€.
3. * μ°μ°μλ‘ μμμ matrixλ₯Ό κ³±ν©λλ€.
4. coutμΌλ‘ matrixλ₯Ό μΆλ ₯ν©λλ€.
Matrix ν΄λμ€
class Matrix {
int** values ;
int row, column ;
public:
β¦
} ;
1. Matrix ν΄λμ€λ₯Ό μ μνλ€.
μμμ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) inheritance
1. coutμΌλ‘ Employee λ₯Ό μΆλ ₯ν©λλ€.
2. Manager ν΄λμ€μ addEmployee ν¨μλ‘ μ§μμ λ£μ΅λλ€.
3. coutμΌλ‘ Manager λ₯Ό μΆλ ₯ν©λλ€.
EmployeeLevel enum
enum EmployeeLevel { μ¬μ, λ리, κ³Όμ₯, μ°¨μ₯, λΆμ₯} ;
Employee ν΄λμ€μ μ΄λ₯Ό μμ λ°λ Manager ν΄λμ€
class Employee {
string name ;
const EmployeeLevel level ;
public:
β¦
} ;
class Manager : public Employee {
vector<Employee*> group ;
public:
β¦
} ;
1. enum EmployeeLevelλ₯Ό μ μνλ€.
2. Employee ν΄λμ€μ μ΄λ₯Ό μμ λ°λ Manager ν΄λμ€λ₯Ό μ μνλ€.
Polymorphism μ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) Polymorphism
1. λνμ μ μ₯νκ³ μΆλ ₯νλ νλ‘κ·Έλ¨μ
λλ€.
enum Colorμ Shape ν΄λμ€
enum Color {RED, BLUE, YELLOW} ;
class Shape {
Color lineColor ;
public:
Color getLineColor() const { return lineColor ; }
virtual Shape* clone() const = 0 ;
virtual void print() const = 0 ;
virtual float getLength() const = 0 ;
} ;
1. enum Colorλ₯Ό μ μνλ€.
2. Shape ν΄λμ€λ₯Ό μ μνλ€.
λ λ§μ topic λ€μ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) class, vector, inheritance
1. ItemList μ CPU λͺ
κ³Ό μ 보λ€μ λ£μ μ μμ΅λλ€.
2. ItemList ν΄λμ€μ addItem ν¨μλ‘ CPU μ 보λ₯Ό λ£μ΅λλ€.
3. ItemList ν΄λμ€μ removeItem ν¨μλ‘ CPU μ 보λ₯Ό μμ ν©λλ€.
4. ItemList ν΄λμ€μ print() ν¨μλ‘ CPU μ 보λ₯Ό μΆλ ₯ν©λλ€.
Template class μ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) Template class
1. Listν΄λμ€μ addν¨μλ μμλ₯Ό μΆκ°ν©λλ€.
2. Listν΄λμ€μ find(λ¬Έμμ΄)ν¨μλ λ¬Έμμ΄μ΄ μΌμΉνλ©΄ trueλ₯Ό λΆμΌμΉνλ©΄ falseλ₯Ό 리ν΄ν©λλ€.
Exception Handling μ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) Exception Handling
1. StackExceptionμ λν νλ‘κ·Έλλ°μ ν©λλ€.
2. destructor, copy constructor, assignment operatorλ₯Ό ꡬνν©λλ€.
3. μ€νμ pop(), push(), print()λ₯Ό ꡬνν©λλ€.
namespace μ λν΄ λ°°μ°κ³ , κ·Έμ λν μ€μ΅μ μ§νν©λλ€.
(1) namespace
1. μ§μ¬κ°ν, μμ μ
λ ₯ λ°κ³ μΆλ ₯ν©λλ€.
2. addElement ν¨μλ‘ λνμ μΆκ°ν©λλ€.
3. getElement ν¨μλ‘ λνμ μΆλ ₯ν©λλ€.
4. removeElement ν¨μλ‘ λνμ μμ ν©λλ€.