ν°μ€ν 리 λ·°
β» μ€κ°κ³Όμ λ¬Ό : κΈ°κ° μ§μΌμ μ μΆνκΈ°
π Cμ C++ μΈμ΄
C++ μΈμ΄λ?
· 1979λ Bell μ°κ΅¬μμ Bjarne Stroustrup(λΉμΌλ€ μ€νΈλ‘μ€νΈλ£Ή)μ΄
C μΈμ΄λ₯Ό νμ₯ν΄ λ§λ νλ‘κ·Έλλ° μΈμ΄
· 1983λ λΆν° C++ μ΄λ¦ μ¬μ©
μ£Όμ νμ₯ λ΄μ©
· κ°μ²΄μ§ν₯ νλ‘κ·Έλλ° : ν΄λμ€, μμ, λ€νμ±, λμ λ°μΈλ© λ±
· μΌλ°ν νλ‘κ·Έλλ° : ν νλ¦Ώ
· μμΈμ²λ¦¬
π C++ μΈμ΄μ νμ€
κ΅μ νμ€ν기ꡬμ C++ νμ€ν μ°ν
β« μλ£νμ λν μΆλ‘ μ΄λΌλμ§ λλ€ λ±μ΄ λμ λμ΄ C++11 λΆν° λ§μ λ³νλ₯Ό κ°κ² λμμ
οΌμ 체λ μΈμ΄κ° μλ, κ°μ μ΄ νμν λΆλΆμ 보μνμ¬ λ°μ νλ μΈμ΄!
οΌλ΄κ° κ°μ§ μ»΄νμΌλ¬κ° μ΅μ λ²μ μ λ€ μ§μνλ κ²μ μλ
π C++ νλ‘κ·Έλ¨μ μμ€ νμΌ
// ν¬κ² λ κ°μ§ μ ν
1. μμ€ νλ‘κ·Έλ¨ νμΌ
β« μ²λ¦¬νκ³ μ νλ μμ
μν, C++ νλ‘κ·Έλ¨ λͺ
λ Ήμ΄λ₯Ό λ΄κ³ μμ
β« νμΌμ νμ₯μ : .cpp / .cxx / .C λ± μ¬μ© (.cppλ₯Ό κ°μ₯ λ§μ΄ μ¬μ©)
2. ν€λ νμΌ
β« μ¬λ¬ μμ€ νμΌμ 곡ν΅μ μΌλ‘ μ μΈλλ λ΄μ©μ λ΄μ νμΌ
γ: ex) ν΄λμ€, ν¨μμ μν, λ§€ν¬λ‘, μ μλ³μ, μμ λ±
β« λ¨λ μ»΄νμΌλμ§ μκ³ , #include λͺ λ Ήμ΄λ₯Ό μ¬μ©ν΄ 곡ν΅μ μΈ λ΄μ©μ
γλ°λ³΅μ μμ μμ΄ κ°λ¨ν μνν μ μκ² λ¨
β« νμ₯μ : .h / .hpp λ± μ¬μ© (μΌλ°μ μΌλ‘ .h μ¬μ©)
π C++ νλ‘κ·Έλ¨μ λΉλ
ν€λνμΌμ λ΄μ©μ λ¨λ μΌλ‘ μ»΄νμΌ λμ§ μκ³ #include "sub.h" λͺ λ Ήμ μν΄ .cpp νμΌ λ΄μμ μ»΄νμΌ
: μ€μ λ‘ λ²μλλ νμΌμ Sub.cpp / Sample.cpp μμ€ νμΌ.
λν, μμ€ νμΌμ λ²μνλ©΄ λͺ©μ νμΌμ΄ λ§λ€μ΄ μ§ (κ·Έ κ³Όμ μ 'μ»΄νμΌ νλ€' λΌκ³ ν¨)
νμ§λ§ λͺ©μ νμΌμ΄λΌ ν΄μ λ¨λ λμ λΆκ°
λμνλ €λ©΄ λΌμ΄λΈλ¬λ¦¬(C++κ° μ 곡νλ μ μ©ν κΈ°λ₯) μ κ²°ν© νμ!
κ²°ν©νλ κ³Όμ = λ§ν¬
κ²°κ³Όμ μΌλ‘ μ€ν νλ‘κ·Έλ¨ νμΌ('.exe')μ΄ λ§λ€μ΄ μ§
→ μ΄λ¬ν μ λ°μ μΈ κ³Όμ : νλ‘κ·Έλ¨μ λΉλνλ κ²
νμν λꡬ
· μμ€ νλ‘κ·Έλ¨ λ° GUI λ±μ νΈμ§κΈ°/μλν° (μμ€ νμΌμ λ§λ€κΈ° μν¨)
· μ»΄νμΌλ¬ (μ»΄νμΌ μ νμ)
· λ§μ»€ (λ§ν¬ μ νμ)
· λλ²κΉ λꡬ (μλ¬λ₯Ό μ°Ύμλ΄κΈ° μν λλ²κ±°)
β« μ΄λ₯Ό λͺ¨λ λ¬Άμ ν΅ν©κ°λ°νκ²½(IDE) μ‘΄μ¬
ex) vs code / eclipse / dev c++ / code Blocks λ±
π C++ μμ€ νλ‘κ·Έλ¨
C++ μ£Όμ
β« μλ°μ μ£Όμ μ¬μ© λ°©λ² λμΌ
π μ νμ²λ¦¬
μ νμ²λ¦¬μ μ§μ
μ νμ²λ¦¬λ?
· C++ νλ‘κ·Έλ¨μ μ»΄νμΌνκΈ° μ μ μμ€ νλ‘κ·Έλ¨μ κ°κ³΅νμ¬
μ»΄νμΌλ¬κ° μ€μ λ‘ λ²μν μμ€ νλ‘κ·Έλ¨μ λ§λλ κ²
· μ νμ²λ¦¬κΈ° μ§μμ΄(preprocessor directives)λ‘ μ²λ¦¬λ₯Ό μ§μν¨
- μ νμ²λ¦¬κΈ° μ§μμ΄λ ‘#’λ‘ μμν¨
- μ νμ²λ¦¬κΈ° μ§μμ΄ λ¬Έμ₯μ ν νμ ν κ°μ λ¬Έμ₯μ μμ±ν¨
γ(μΌλ°μ μΈ λ¬Έμ₯μ ν ν, μ¬λ¬ ν μκ΄ μμ΄ μμ± κ°λ₯)
· λνμ μΈ μ νμ²λ¦¬
- ν€λνμΌ μ½μ
: #include
- λ§€ν¬λ‘ μ μΈ λ° ν΄μ : #define, #undef
- μ‘°κ±΄λΆ μ»΄νμΌ : β #if (#endif μ νμλ‘ μ§μ μ΄λ£Έ // ifλ¬Έμ λμ μ리λ κ²),
γβ‘ #ifdef (λ§μ½ μ μλμ΄ μμΌλ©΄ μ°Έ, μλλ©΄ κ±°μ§), β’ #ifndef (λ§μ½ μ μλμ΄ μμ§ μμΌλ©΄)
γ⫠쑰건μΌλ‘ ν΄λΉ λ¬Έμ₯μ λ²μν μ§ λ§ μ§ κ²°μ νλ κ²
μ νμ²λ¦¬μ μ - ν€λ νμΌ μ½μ
#include : ν€λ νμΌμ μμ€ νλ‘κ·Έλ¨ νμΌκ³Ό κ²°ν©μν€λ λͺ λ Ή
β« a.cpp μμ€ νμΌμ μ»΄νμΌ ν λ μλ ν€λνμΌ(a.h)μ ν΄λΉ μ νμ²λ¦¬κΈ° μ§μμ΄ μμΉμ μ½μ
· <iostream> μλ .h νμ₯μκ° μμ → μ¬μ©μκ° λ§λ νμΌμ " " μμ λ£μ
γC++ νμ€ λΌμ΄λΈλ¬λ¦¬μμ μ 곡νλ ν€λ νμΌμΈ κ²½μ° νμ₯μ λΆνμ
· μ²μμ C++ κ° μκ²Όμ λ .hλΌλ νμ₯μκ° νμνμ§λ§
γνμ€μ΄ κ°μ λ μ΄ν .hκ° μλ μ΄μ λ²μ κ³Ό μ΄ν λ²μ μΌλ‘ ꡬλΆν μ μλ€.
· νμ€ λΌμ΄λΈλ¬λ¦¬μμ κ°μ Έμ¨ νμΌμ κ°μ Έμ¬ κ²½μ° μ΄λ¦ < > (κΊ½μ ) μ¬μ©
· κ°μ ν΄λ λ΄ μμΉν ν€λνμΌμ κ°μ Έμ¬ κ²½μ°μλ " " μ¬μ©
οΌμΆκ°λ‘ cout . endlκ³Ό κ°μ μ μΆλ ₯κ³Ό κ΄λ ¨λ κ°μ²΄λ€μ μ¬μ©νκΈ° μν΄μλ
γν΄λΉ λ΄μ©μ΄ iostream νμΌμ μ μλμ΄ μμΌλ―λ‘ #include ν΄ μ£Όμ΄μΌ ν¨!
π λ¬Έμ₯
C++ νλ‘κ·Έλ¨μ λ¬Έμ₯κ³Ό λΈλ‘(block)
π ν¨μ
ν¨μμ ꡬμ±
β« λ©μΈ ν¨μλ int μλ£νμ λ°νν¨
π μ μΆλ ₯ μ€νΈλ¦Ό
// κ°μ²΄ : λ³μμ ν¨μ λ¬Άμ (μ²λ¦¬ λ¨μ λ¬Άμ)
std::cout κ°μ²΄
endl : end of line (νμ λμΌλ‘ μλ μ€λΆν° μΆλ ₯νλλ‘ ν¨)
std::cin κ°μ²΄
κ΅¬λΆ λ¬Έμ : λ°μ΄ν°λ₯Ό κ΅¬λΆ → λμ΄μ°κΈ°λ₯Ό κ΅¬λΆ λ¬Έμλ‘ μΈμ
π λͺ μΉκ³΅κ°
λͺ μΉκ³΅κ°μ΄λ?
:: μ μμλ λ²μ(μμ)μ λνλ΄λ κΈ°νΈ
λͺ μΉκ³΅κ° μ¬μ© μ
γβΌ μ½λλΈλ μ°Έμ‘°
#include <iostream>
namespace NameSpace1 { int a = 10; } // λͺ
μΉ κ³΅κ°
namespace NameSpace2 { int a = 20; } // λͺ
μΉ κ³΅κ° (μμλ aλ λ€λ¦)
int a = 30; // μ μ λͺ
μΉ κ³΅κ° (λͺ
μΉ κ³΅κ°μ μνμ§ μμ)
namespace NameSpace1 { int b = 50; } // μμ int aκ° μν κ²κ³Ό κ°μ λͺ
μΉ κ³΅κ°
int main() // λ©μΈ ν¨μ
{
int a = 40; // μ§μ λ³μ (λΈλ‘ μμ μμ)
/* μμ λ€ aλ₯Ό ꡬλΆν΄λ³΄μ. */
std::cout << NameSpace1::a << std::endl; // 10 μΆλ ₯
std::cout << NameSpace2::a << std::endl; // 20 μΆλ ₯
std::cout << ::a << std::endl; // 30 μΆλ ₯
std::cout << a << std::endl; // 40 μΆλ ₯
std::cout << NameSpace1::b << std::endl; // 50 μΆλ ₯
return 0;
}
β main() ν¨μλ ν κ°μ νλ‘μ νΈ λ΄ ν λ²λ§ μ μ(μ μΈ)ν μ μλ€!
'using'μ μ΄μ©ν λͺ μΉκ³΅κ° μ¬μ©
β« stdλΌλ λͺ μΉκ³΅κ° μ΄λ¦μ κΈ°λ³ΈμΌλ‘ μ¬μ©νκ² λ€ μ§μ νλ κ²
νμ§λ§ μμ κ°μ using namespace std;λ κΆμ₯νμ§ μκ³ ,
μλμ²λΌ νμν κ°μ²΄μλ§ using μ¬μ©μ μΆμ².
using namespaceλ‘ μ§μ ν λͺ μΉ μλ΅ν΄λ³΄κΈ°
β« μλ cout μμ μλ std:: λ₯Ό μλ΅ν μ μκ² λ¨
οΌλ§μ½ μΆ©λ λ°μ μ λͺ μΉ κ³΅κ°μ μ§μ ν΄ κ΅¬λΆν λ‘ νμ.
λ λ€λ₯Έ using namespaceμ μ
βοΈ μ 리
π₯οΈπ±οΈ μ€μ΅
// Visual Studio Community μ¬μ© (λ§μ΄ν¬λ‘μννΈ μ 곡)
κΈ°λ³Έ νλ©΄
β : νΈμ§ μ°½ / β‘ μ루μ νμκΈ°
λΉλ
λλ²κΉ
'π«π' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C++] 230830 (C++ μΈμ΄μ κΈ°μ΄_2) (0) | 2023.09.05 |
---|---|
[μ»΄ν¨ν° κ³Όν κ°λ‘ ] 230903 (μλ£κ΅¬μ‘°_1) (1) | 2023.09.03 |
[μ»΄ν¨ν° κ³Όν κ°λ‘ ] 230903 (μ»΄ν¨ν°μ λ°μ΄ν°_2) (0) | 2023.09.03 |
[μ»΄ν¨ν° κ³Όν κ°λ‘ ] 230902 (μ»΄ν¨ν°μ λ°μ΄ν°_1 /μλ£) (0) | 2023.09.02 |
[C++] 230830 (C++ μΈμ΄μ κΈ°μ΄) (0) | 2023.08.30 |