μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
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
- C
- λ¬μ€νΈ
- μλ°
- νμ΄μ¬ μ²Όλ¦°μ§
- ubuntu
- μλ° κΈ°μ΄
- Rust
- μ°λΆν¬
- λ°±μ€ λ¬μ€νΈ
- μκ³ λ¦¬μ¦
- λ°μ΄ν°λ² μ΄μ€
- Database
- μ€λΌν΄
- λ°±μ€
- OS
- νμ΄μ¬ μ±λ¦°μ§
- data communication
- java
- μλ° κ°λ
- Python
- μ€λΌν΄DB
- μ΄μ체μ
- Reversing
- λ°μ΄ν° ν΅μ
- νμ΄μ¬ μκ³ λ¦¬μ¦
- Operating System
- νμ΄μ¬
- λ¬μ€νΈ νλ‘κ·Έλλ° κ³΅μ κ°μ΄λ
- λ¬μ€νΈ μμ
- Python challenge
Archives
- Today
- Total
IT’s Portfolio
[Lecture] Cpp - Finals Summary λ³Έλ¬Έ
728x90
λ°μν
π» 2023λ Cpp κΈ°λ§κ³ μ¬ λλΉ μμ μ 리
π [08] μμ
μμμ κ°λ
μμ(Inheritance)
: κ°μ²΄ μ§ν₯ μΈμ΄μ λ³Έμ§μ μΈ νΉμ±- λ ν΄λμ€ μ¬μ΄μ λΆλͺ¨-μμμ μμ κ΄κ³ μ μΈ
- μμ ν΄λμ€μ κ°μ²΄κ° μμ±λ λ, μμ μ λ©€λ²λΏ μλλΌ λΆλͺ¨ ν΄λμ€μ λ©€λ²λ₯Ό ν¬ν¨ν κ²μ μ§μν¨
- λΆλͺ¨ ν΄λμ€ =>
κΈ°λ³Έ ν΄λμ€(base class)
- μμ ν΄λμ€ =>
νμ ν΄λμ€(derived class)
- cppλ μ¬λ¬ κ°μ ν΄λμ€λ₯Ό λμμ μμλ°λ
λ€μ€ μμ(multiple inheritance)
νμ©
- μμμ λͺ©μ κ³Ό μ₯μ
- κ°κ²°ν ν΄λμ€ μμ±
- ν΄λμ€ κ°μ κ³μΈ΅μ λΆλ₯ λ° κ΄λ¦¬μ μ©μ΄ν¨
- ν΄λμ€ μ¬μ¬μ©κ³Ό νμ₯μ ν΅ν μννΈμ¨μ΄μ μμ°μ± ν₯μ
- μμμ is-a κ΄κ³
- has-a κ΄κ³λ μμμΌλ‘ λͺ¨λΈλ§ X
ν΄λμ€ μμκ³Ό κ°μ²΄
class Student : public Person {
};
class StudentWorker : public Student {
};
- Personμ μμλ°λ Studentμ Studentλ₯Ό μμλ°λ StudentWorker μ μΈ
- κΈ°λ³Έ ν΄λμ€ μ΄λ¦ μμ λ°λμ μμ μ κ·Όμ μ§μ ν΄μΌ νλλ°, μ κ·Ό μ§μ μ 3κ° λͺ¨λ μ¬μ© κ°λ₯ν¨
- μμμ νμλ μ νμ΄ μμ
class ColorPoint : public Point {
// Pointλ₯Ό μμλ°λ ColorPointμ μμ μ μΈ
};
int main() {
Point p; // Point νμ
μΈ κΈ°λ³Έ ν΄λμ€ κ°μ²΄ p μμ±
ColorPoint cp; // ColorPoint νμ
μΈ νμ ν΄λμ€ κ°μ²΄ cp μμ±
}
- κ°μ²΄ pλ Point ν΄λμ€μ λ©€λ²λ§ κ°μ§
- κ°μ²΄ cpλ Point λ©€λ²μ ColorPoint λ©€λ² λͺ¨λ κ°μ§
νμ ν΄λμ€μμ κΈ°λ³Έ ν΄λμ€ λ©€λ² μ κ·Ό
- νμ ν΄λμ€λ μμμ ν΅ν΄ κΈ°λ³Έ ν΄λμ€μ λ©€λ²λ₯Ό μμ μ λ©€λ²λ‘ νμ₯
- νμ ν΄λμ€μ λ©€λ²λ€μ κΈ°λ³Έ ν΄λμ€μ
private
λ©€λ² μΈμ λͺ¨λ λ©€λ²λ₯Ό μ κ·Όν μ μμ
κΈ°λ³Έ ν΄λμ€μ private λ©€λ²μ μμκ³Ό μ κ·Ό
- κΈ°λ³Έ ν΄λμ€μ
private
λ©€λ²λ νμ ν΄λμ€μ μμλ¨ - νμ ν΄λμ€μ κ°μ²΄κ° μκΈΈ λ νμ ν΄λμ€μ κ°μ²΄ λ΄μ μμ±λ¨
- μ¦, κΈ°λ³Έ ν΄λμ€μ μ μΈλ
private
λ©€λ²λ νμ ν΄λμ€μ μμλκ³ νμ ν΄λμ€μ κ°μ²΄μλ ν¬ν¨λμ§λ§, νμ ν΄λμ€μ μ΄λ€ ν¨μμμλ μ§μ μ κ·Όμ΄ λΆκ°ν¨
ν΄λμ€ μΈλΆμμ νμ ν΄λμ€μ λ©€λ² νΈμΆ
main()
ν¨μμ κ°μ΄ νμ ν΄λμ€ μΈλΆμμ νμ ν΄λμ€ κ°μ²΄μpublic
λ©€λ²μ κΈ°λ³Έ ν΄λμ€μpublic
λ©€λ²λ₯Ό λͺ¨λ μ κ·Όν μ μμ
protected μ κ·Ό μ§μ
protected
μ κ·Ό μ§μ μΌλ‘ μ μΈλ λ©€λ²λ ν΄λμ€ λ΄μ λ©€λ² ν¨μμ μ΄ ν΄λμ€λ₯Ό μμλ°μ νμ ν΄λμ€μ λ©€λ² ν¨μμκ²λ§ μ κ·Όμ΄ νμ©λ¨
μμκ³Ό μμ±μ, μλ©Έμ
- νμ ν΄λμ€μ κ°μ²΄κ° μμ±λ λ νμ ν΄λμ€μ μμ±μμ κΈ°λ³Έ ν΄λμ€μ μμ±μκ° λͺ¨λ μ€νλ¨
- νμ ν΄λμ€μ μμ±μλ³΄λ€ κΈ°λ³Έ ν΄λμ€μ μμ±μκ° λ¨Όμ μ€νλ¨
- μμ±μλ κ°μ²΄λ₯Ό μ΄κΈ°νν λͺ©μ μΌλ‘ μ¬μ©λ¨
- μμ±μμ νΈμΆ κ΄κ³λ μ»΄νμΌλ¬μ μν΄ μ΄λ£¨μ΄μ§
- μλ©Έμλ μμ±μμ μ€ν μμμ λ°λλ‘ μ€νλ¨
- νμ ν΄λμ€μμ κΈ°λ³Έ ν΄λμ€μ μμ±μλ₯Ό μ ννμ§ μμ κ²½μ°, κΈ°λ³Έ ν΄λμ€μ κΈ°λ³Έ μμ±μκ° νΈμΆλ¨
B(int x) : A(x+3) {
cout << "맀κ°λ³μμμ±μ B" << x << endl;
}
- νμ ν΄λμ€μ μμ±μλ₯Ό μμ±ν λ κΈ°λ³Έ ν΄λμ€μ μμ±μλ₯Ό λͺ μμ μΌλ‘ μ ννλ λ°©λ²
μμμ μ’ λ₯
public
μμ : κΈ°λ³Έ ν΄λμ€μprotected
,public
λ©€λ²λ€μ μ κ·Ό μ§μ λ³κ²½ μμ΄ νμ ν΄λμ€μ κ·Έλλ‘ μμ νμ λ¨private
μμ : κΈ°λ³Έ ν΄λμ€μprotected
,public
λ©€λ²λ€μ λͺ¨λprivate
μ κ·Ό μ§μ μΌλ‘ λ³κ²½λμ΄ νμ ν΄λμ€μ μμ νμ λ¨protected
μμ : κΈ°λ³Έ ν΄λμ€μprotected
,public
λ©€λ²λ€μ λͺ¨λprotected
μ κ·Ό μ§μ μΌλ‘ λ³κ²½λμ΄ νμ ν΄λμ€μ μμ νμ λ¨
π [10] ν νλ¦Ώκ³Ό νμ€ ν νλ¦Ώ λΌμ΄λΈλ¬λ¦¬(STL; Standard Template Library)
μΌλ°νμ ν νλ¦Ώ
template
: ν¨μλ ν΄λμ€ μ½λλ₯Ό μ°μ΄λ΄λ―μ΄ μμ°ν μ μλλ‘μΌλ°ν(generic)
μν€λ λꡬν νλ¦Ώ ν¨μ(template function)
orμ λ€λ¦ ν¨μ(generic function)
:template
ν€μλλ₯Ό μ΄μ©ν΄ λ§λ ν¨μ- ν νλ¦Ώ ν¨μλ μ»΄νμΌλμ§λ νΈμΆλμ§λ μλ ν¨μμ ν
- ν νλ¦Ώ ν¨μλ‘λΆν° ꡬ체νλ λ²μ μ ν¨μκ° μ»΄νμΌλκ³ νΈμΆλ¨
ν νλ¦Ώ μ μΈκ³Ό μ λ€λ¦ νμ
// μ€λ³΅ ν¨μ 1
void myswap(int &a, int &b) {
int tmp;
tmp = a;
a = b;
b = tmp;
}
// μ€λ³΅ ν¨μ 2
void myswap(double &a, double &b) {
double tmp;
tmp = a;
a = b;
b = tmp;
}
// μ λ€λ¦ ν¨μ
template <class T>
void myswap(T &a, T &b) {
T tmp;
tmp = a;
a = b;
b = tmp;
}
template
ν€μλμ<class T>
λ<typename T>
λ‘ μ λ€λ¦ νμ T μ μΈμ λ€λ¦ νμ (generic type)
: cppμ κΈ°λ³Έ νμ μ΄ μλλ©°, μ΄λ€μ μΌλ°νμν¨ μλ‘μ΄ νμ
ꡬ체ν
ꡬ체ν(specialization)
: μ€λ³΅ ν¨μλ€μ ν νλ¦Ώννλ κ³Όμ μ μκ³Όμ - μ»΄νμΌλ¬κ° λ΄λΉν¨
- ꡬ체νλ₯Ό ν΅ν΄ μμ±λ ν¨μλ₯Ό
ꡬ체νλ ν¨μ(specialized function)
λΌκ³ ν¨
ν νλ¦Ώμ μ₯λ¨μ κ³Ό μ λ€λ¦ νλ‘κ·Έλλ°
- μννΈμ¨μ΄μ μμ°μ±κ³Ό μ μ°μ± ν₯μ
- ν¬ν μ μ·¨μ½
- μ€λ₯ λ©μμ§κ° λΉμ½νμ¬ λλ²κΉ μ λ§μ μ΄λ €μ
μ λ€λ¦ νλ‘κ·Έλλ°(generic programming)
: ν νλ¦Ώμ μ¬μ©νμ¬ μ λ€λ¦ ν¨μλ μ λ€λ¦ ν΄λμ€λ₯Ό λ§λ€κ³ μ΄λ₯Ό νμ©νμ¬ νλ‘κ·Έλ¨μ μμ±νλ ν¨λ¬λ€μ
λ€μν μ λ€λ¦ ν¨μ
- μ λ€λ¦ ν¨μλ₯Ό λ§λ€ λ, κ°λ°μμ νμμ λ°λΌ μ λ€λ¦ νμ μ νλ μ΄μ λ§μλλ‘ μ μΈνλ©΄ λ¨
- ν νλ¦Ώ ν¨μμ λμΌν μ΄λ¦μΌλ‘ μ€λ³΅λ ν¨μκ° μμ κ²½μ°, μ€λ³΅ ν¨μκ° μ°μ νμ¬ λ°μΈλ©λ¨
μ λ€λ¦ ν΄λμ€
template <class T>
class Box {
T data;
public:
Box() { }
void set(T v) {
data = v;
}
T get() {
return data;
}
};
- ν΄λμ€λ
template
ν€μλλ‘ μΌλ°νμν¬ μ μμ - ν΄λμ€μ λͺ¨λ λ©€λ² ν¨μ μμ ν νλ¦Ώ ν¨μλ‘ μμ±λμ΄μΌ ν¨
STLκ³Ό νμ©
νμ€ ν νλ¦Ώ λΌμ΄λΈλ¬λ¦¬(Standard Template Library)
: ν νλ¦ΏμΌλ‘ μμ±λ λ§μ μ λ€λ¦ ν΄λμ€μ ν¨μ λΌμ΄λΈλ¬λ¦¬- νλ‘κ·Έλλ°μ λ§€μ° μ μ©ν μλ§μ 컨ν μ΄λμ μκ³ λ¦¬μ¦ μ 곡
- κ°μ²΄ μ§ν₯ κΈ°λ²κ³Ό μ λ€λ¦ νλ‘κ·Έλλ° κΈ°λ²μ μ¬μ©νμ¬ λ§λ€μ΄μ‘κΈ°μ μ μ°μ±μ΄ μ’μ
- μ λ¬Έκ°κ° λ§λ€μ΄μ κ²μ¦λμμ
컨ν μ΄λ(container)
- ν νλ¦Ώ ν΄λμ€- μλ£λ₯Ό μ μ₯νλ ꡬ쑰
- μμ°¨ 컨ν
μ΄λ
- μλ£ μμ°¨ μ μ₯
- vector : λμ λ°°μ΄
- λ€μμ μλ£ μΆκ°
- deque : μ λμμ μ λ ₯κ³Ό μΆλ ₯ κ°λ₯
- list : 벑ν°μ μ μ¬
- μλ£λ₯Ό μ€κ°μ μΆκ°νλ μ°μ°μ΄ ν¨μ¨μ μ
- μ°κ΄ 컨ν
μ΄λ
- μ¬μ κ³Ό κ°μ ꡬ쑰λ₯Ό μ¬μ©ν΄ μλ£ μ λ ¬ μ μ₯
- set : μ€λ³΅μ΄ μλ μλ£λ€μ΄ μ λ ¬λμ΄ μ μ₯ - μ°κ΄
- multiset : μ€λ³΅ νμ©
- map : key-value νμμΌλ‘ μ μ₯ - μ°κ΄
- ν€κ° μ μλλ©΄ ν΄λΉ κ°μ μ°Ύμ μ μμ
- multimap : μ€λ³΅ νμ©
- 컨ν
μ΄λ μ΄λν°
- μμ°¨ 컨ν μ΄λμ μ μ½μ κ°ν΄μ λ°μ΄ν°λ€μ΄ μ ν΄μ§ λ°©μμΌλ‘λ§ μ μΆλ ₯
- queue : μ μ μ μΆ μλ£ κ΅¬μ‘°
- stack : νμ μ μΆ μλ£ κ΅¬μ‘°
- priority queue : νμ μμλ€μ΄ μ°μ μμλ₯Ό κ°μ§κ³ μκ³ μ°μ μμκ° λμ μμκ° λ¨Όμ μΆλ ₯λλ μλ£ κ΅¬μ‘°
λ°λ³΅μ(iterator)
- 컨ν μ΄λ μμμ λνμΌλ°νλ ν¬μΈν°(generalized pointer)
- 컨ν μ΄λ λ΄μ μ μ₯λ μμλ€μ μμ°¨μ μΌλ‘ μ²λ¦¬νκΈ° μν μ»΄ν¬λνΈ
- 컨ν μ΄λμ μκ³ λ¦¬μ¦ μ¬μ΄μ λ€λ¦¬ μν
- λ°λ³΅μμ μ°μ°μ
++
: 컨ν μ΄λ λ€μ μμλ₯Ό κ°λ¦¬ν€κΈ° μν μ°μ°μ--
: 컨ν μ΄λ μ΄μ μμλ₯Ό κ°λ¦¬ν€κΈ° μν μ°μ°μ==
,!=
: bool μ°μ°μ*
: λ°λ³΅μκ° κ°λ¦¬ν€λ μμμ κ°μ μΆμΆνκΈ° μν μ°μ°μ
μκ³ λ¦¬μ¦(algorithm)
- ν νλ¦Ώ ν¨μ- μ λ ¬μ΄λ νμκ³Ό κ°μ λ€μν μκ³ λ¦¬μ¦ κ΅¬ν
- find : 컨ν μ΄λ λ΄μμ νΉμ μλ£ μ°ΎκΈ°
- sort : μλ£λ€ ν¬κΈ°μ μ λ ¬
- reverse : μλ£λ€ μμ μμ
- remove : 쑰건μ λ§μ‘±νλ μλ£ μμ
- transform : 컨ν μ΄λμ μμλ€μ μ¬μ©μκ° μ 곡νλ λ³ν ν¨μμ λ°λΌμ λ³ν
list
#include <iostream>
#include <time.h>
#include <list>
using namespace std;
int main()
{
list<int> values;
list<int>::iterator it;
srand(time(NULL));
for (int i = 0; i < 10; i++) {
values.push_back(rand() % 100);
}
values.sort();
for (it = values.begin(); it != values.end(); it++)
cout << *it << " ";
cout << endl;
return 0;
}
push_back()
,pop_back()
,insert(n, v)
vector
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<double> score(10);
double max = 0;
for (int i=0; i<score.size(); i++) {
cout << "μ±μ μ
λ ₯: ";
cin >> score[i];
if (score[i] > max) {
max = score[i];
}
}
cout << "μ΅κ³ μ±μ : " << max << endl;
return 0;
}
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<double> score;
double max = 0;
while(1) {
double v = 0;
cout << "μ±μ μ
λ ₯(-1 μ
λ ₯ μ μ’
λ£): ";
cin >> v;
if (v == -1) break;
score.push_back(v);
if (v>max) max=v;
}
cout << "μ΅κ³ μ±μ : " << max << endl;
return 0;
}
push_back()
: λ²‘ν° λμ μμ μΆκ° ν ν¬κΈ° 1pop_back()
: λ°±ν° λμμ μμ μ κ±° ν ν¬κΈ° -1insert(n, v)
: 벑ν°μ nλ²μ§Έ μ리μ v μμ μΆκ°
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<double> score;
double max = 0;
while(1) {
double v = 0;
cout << "μ±μ μ
λ ₯(-1 μ
λ ₯ μ μ’
λ£): ";
cin >> v;
if (v == -1) break;
score.push_back(v);
}
vector<double>::iterator it;
// c++14 μ΄μ λ²μ
for (it=score.begin(); it!=score.end(); it++) {
if (*it>max) max = *it;
}
// c++14
// for (auto p=score.begin(); p!=score.end(); ++p) ..
// for (auto &n : score) ..
cout << "μ΅κ³ μ±μ : " << max << endl;
return 0;
}
- λ°λ³΅μ μ¬μ©
auto
: μ»΄νμΌλ¬μκ² λ³μ μ μΈλ¬ΈμΌλ‘λΆν° λ³μμ νμ μ μΆλ‘ νμ¬ κ²°μ νλλ‘ μ§μν¨
컨ν μ΄λ κ³΅ν΅ ν¨μ
deque
push_front()
: λ°ν μμ κ° μΆκ°pop_front()
: λ°ν μμκ° μΆμΆpush_back()
: λ°ν λ€μ κ° μΆκ°pop_back()
: λ°ν λ€μ κ° μΆμΆ
map
make_pair(t, u)
: tκ° ν€, uκ° κ°
stack, queue
push()
: κ°μ μ μ₯pop()
: μ€νμ νμ μ μΆ κ΅¬μ‘°λ‘ κ° μΆμΆ, νλ μ μ μ μΆ κ΅¬μ‘°λ‘ κ° μΆμΆ
find, find_if
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main() {
vector<string> vec = { "μ¬κ³Ό", "ν λ§ν ", "λ°°", "μλ°", "ν€μ" };
auto it = find(vec.begin(), vec.end(), "μλ°");
if (it != vec.end()) {
cout << "μλ°μ΄ " << distance(vec.begin(), it) << "μ μμ΅λλ€." << endl;
}
return 0;
}
count
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
template <class T>
bool is_even(const T &num) {
return (num % 2) == 0;
}
int main() {
vector<int> vec;
for (int i = 0; i<10; i++)
vec.push_back(i);
size_t n = count_if(vec.begin(), vec.end(), is_even<int>);
cout << "κ°μ΄ μ§μμΈ μμμ κ°μ: " << n << endl;
return 0;
}
binary_search() λ° lambda
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int main() {
vector<string> v = { "one", "two", "three" };
bool result;
auto comp = [](string s1, string s2) { return (s1==s2); };
result = binary_search(v.begin(), v.end(), "two", comp);
if (result == true)
cout << "λ¬Έμμ΄ \"two\" μ λ²‘ν° μμ μμ." << endl;
return 0;
}
for_each() λ° lambda
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
for_each(v.begin(), v.end(), [](int n){ if (n%2==0) cout<<n<<" ";} );
cout << endl;
return 0;
}
5λ³΄λ€ ν° μ μ
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> n = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto cnt = count_if(n.begin(), n.end(), [](int n) { return (n > 5); });
cout << "5λ³΄λ€ ν° μ μμ κ°μ: " << cnt << endl;
return 0;
}
π [11] Cpp μ μΆλ ₯ μμ€ν
μ€νΈλ¦Ό(stream)
- μμκ° μλ λ°μ΄ν°μ μ°μμ μΈ νλ¦
- Cpp νμ€ μ μΆλ ₯ μμ€ν μ λ²νΌλ₯Ό μ¬μ©νλ μ€νΈλ¦Ό μ μΆλ ₯λ§ μ§μ
cin
: Cppμ νμ€ μ λ ₯ μ€νΈλ¦Ό κ°μ²΄- istream νμ
cout
: Cppμ νμ€ μΆλ ₯ μ€νΈλ¦Ό κ°μ²΄- ostream νμ
cerr
,clog
: Cppμ νμ€ μ€λ₯ μΆλ ₯ μ€νΈλ¦Ό κ°μ²΄clog
λ λ²νΌλ₯Ό κ±°μΉ¨cerr
μ λ²νΌλ₯Ό κ±°μΉμ§ μμ
μ½μ μ°μ°μμ μΆμΆ μ°μ°μ
<<
: μ½μ μ°μ°μ- ostream ν΄λμ€μ μμ±λ μ°μ°μ
>>
: μΆμΆ μ°μ°μ- istream ν΄λμ€μ μμ±λ μ°μ°μ
π [12] Cpp νμΌ μ μΆλ ₯
νμΌ μ€νΈλ¦Ό
ofstream
: μΆλ ₯ νμΌ μ€νΈλ¦Ό ν΄λμ€- μΆλ ₯ νμΌ μμ± λ° νμΌμ λ°μ΄ν° μμ± μ μ¬μ©
ifstream
: μ λ ₯ νμΌ μ€νΈλ¦Ό ν΄λμ€- νμΌμ λ°μ΄ν°λ₯Ό μ½μ μ μ¬μ©
fstream
: μΌλ°μ μΈ νμΌ μ€νΈλ¦Ό
νμΌ μ°κΈ°
#include <fstream>
using namespace std;
int main() {
ofstream os("number.txt");
if (!os.is_open()) {
cerr << "error!" << endl;
exit(1);
}
for (int i=0; i<100; i++)
os << i << " ";
return 0;
}
- νμΌ κ°μ²΄λ λ²μλ₯Ό λ²μ΄λλ©΄ νμΌ κ°μ²΄ μλ©Έμκ° νμΌμ λ«μ
νμΌ μ½κΈ°
#include <fstream>
using namespace std;
int main() {
ifstream is("numbers.txt");
if (!is.is_open()) {
cerr << "νμΌ μ€νμ μ€ν¨νμμ΅λλ€" << endl;
exit(1);
}
int number;
while (is) {
is >> number;
cout << number << " ";
}
cout << endl;
return 0;
}
νμΌ λͺ¨λ
ios::in
: μ λ ₯ λͺ¨λios::out
: μΆλ ₯ λͺ¨λios::binary
: μ΄μ§ νμΌ μ μΆλ ₯ λͺ¨λios::ate
: νμΌμ λμ μ΄κΈ° μμΉλ‘ νλ λͺ¨λios::app
: νμΌμ λμ μΆκ°νλ λͺ¨λios::trunc
: μλ‘μ΄ λ΄μ©μΌλ‘ κ΅μ²΄ λͺ¨λ
π [μΆκ°] μμΈμ²λ¦¬
μμΈ(exception)
- μλͺ»λ μ½λ, λΆμ νν λ°μ΄ν°, μμΈμ μΈ μν©μ μνμ¬ λ°μνλ μ€λ₯
interrupt
: μ»΄ν¨ν° μλ μ€ λ¬Έμ κ° λ°μν κ²½μ°λΌλ μ 무 μ²λ¦¬κ° κ³μλ μ μλλ‘ νλ κΈ°λ₯
μ€λ₯ μ²λ¦¬ λ°©μ
- λ€μ€ if λ¬ΈμΌλ‘ μ²λ¦¬νλ λ°©μμ λΉν¨μ¨μ μ
int main() {
try {
...
if ()
throw exception;
} catch (μμΈνμ
맀κ°λ³μ) {
...
}
}
try
: μμΈκ° λ°μν μ μλ λΈλ‘throw
: μμΈλ₯Ό μ μ‘catch
:try
λΈλ‘μμ μμΈκ° λ°μνλ©΄ μ²λ¦¬νλ λΈλ‘
π [μΆκ°] λ©ν° μ€λ λ νλ‘κ·Έλλ°
μ€λ λ(thread)
<thread>
λΌμ΄λΈλ¬λ¦¬μ μ μλμ΄ μμ- λμμ μ²λ¦¬ν΄μΌ ν μΌμ΄ μμ λ
- CPU μ±λ₯ μ΅λ νμ©
- λ³΄λ€ λΉ λ₯΄κ³ μ μ λΉμ©
- λκΈ°μκ° λ° μλ΅μκ° μ΅μν
- μμ€ν λ¨μν
Cppμμμ μ€λ λ
#include<iostream>
#include<thread>
using namespace std;
void func1() {
cout<<"my func1"<<endl;
}
int main() {
thread t(&func1); //λ°©λ² 1
t.join(); //join()μ μ€νμν€λ©΄ tκ° μ’
λ£λκΈ° μ κΉμ§ λκΈ°
return 0;
}
- κΈ°λ³Έ νμ©
// thread_ex.h
#ifndef STUDY_H
#define STUDY_H
#include <fstream>
class Operator {
protected:
std::fstream f1;
std::fstream f2;
public:
Operator();
~Operator();
void sum();
void sub();
};
#endif
// thread_ex.cpp
#include <iostream>
#include <fstream>
#include <thread>
using namespace std;
#include "thread_ex.h"
Operator::Operator() { cout << "operator constructor" << endl; }
Operator::~Operator() { cout << "operator distructor" << endl; }
void Operator::sum() {
cout << "sum() running..." << endl;
f1.open("source.txt");
fstream wf1("plus.txt", ios::out);
if (f1.is_open() && wf1.is_open()) {
while (f1) {
int a, b;
f1 >> a >> b;
wf1 << a << " + " << b << " = " << a+b << endl;
}
wf1.close();
} else {
cerr << "error!" << endl;
exit(1);
}
cout << "sum() shutdown..." << endl;
}
void Operator::sub() {
f2.open("source.txt");
cout << "sub() running..." << endl;
fstream wf2("minus.txt", ios::out);
if (f2.is_open() && wf2.is_open()) {
while (f2) {
int a, b;
f2 >> a >> b;
wf2 << a << " - " << b << " = " << a-b << endl;
}
wf2.close();
} else {
cerr << "error!" << endl;
exit(1);
}
cout << "sub() shutdown..." << endl;
}
int main() {
Operator o;
thread t1(&Operator::sum, &o);
thread t2(&Operator::sub, &o);
t1.join();
t2.join();
return 0;
}
π [μΆκ°] μ¬λ¬ κ°μ§ μΆκ° λ΄μ©λ€
λ©€λ² λ³μ κ°λ¨ μ΄κΈ°ν
class Car {
int speed;
int gear;
string color;
public:
Car(int _s, int _g, string _c) : speed(_s), gear(_g), color(_c) { }
};
μμ λ©€λ²μ μ΄κΈ°ν
class Car {
const int MAX_SPEED;
int speed;
public:
Car() : MAX_SPEED(300) { }
};
κ°μ²΄μ μ°μ°μ
int main() {
Car c1(0, 1, "white");
Car c2(0, 1, "red");
c1 = c2;
if (c1==c2) {
cout << "true" << endl;
} else {
cout << "false" << endl;
}
return 0;
}
- κ°μ²΄μ ν λΉ μ°μ°μ
=
μ μ¬μ©νλ©΄ c2 κ°μ²΄κ° κ°μ§κ³ μλ λ³μμ κ°μ΄ c1μΌλ‘ 볡μ¬λ¨ - κ°μ²΄ λΉκ΅ μμλ
==
μ¬μ©
μ μ λ©€λ² ν¨μ
class Car {
...
public:
static int count; // μ μ λ³μμ μ μΈ
...
// μ μ λ©€λ² ν¨μ
static int getCount() {
return count;
}
};
int Car::count=0; // μ μ λ³μμ μ μ
int main()
{
Car c1(100, 0, "blue");
Car c2(0, 0, "white");
int n = Car::getCount();
cout <<"μ§κΈκΉμ§ μμ±λ μλμ°¨ μ = " << n << endl;
return 0;
}
728x90
λ°μν
'Development Study > C' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C] μλ£κ΅¬μ‘°μ μκ³ λ¦¬μ¦ - Day 1 (1) | 2024.07.17 |
---|---|
[Lecture] Cpp - Assignment (0) | 2023.04.16 |
[Lecture] Cpp - Mid Summary (0) | 2023.04.14 |
[C] C & Cpp with Mac Vscode μ°Έκ³ κΈ (0) | 2023.03.05 |
[C] μκ³ λ¦¬μ¦ - λλ€ μ μλ€ μ€ λ λ²μ§Έλ‘ ν° κ° μΆλ ₯νκΈ° (0) | 2020.06.28 |
Comments