C/C++ ֽ
C++ ǥ
˴ٽ C 1972 Ͻ ġ C++ 80 ʿ ƮνƮ C ü ߰Ͽ . â C++ ϰ Ʃϴ 98 ǥؾ Ȯߴ. ̶ ǥؾ Ī ISO14882:1998̸ ٿ C++98̶ θ.
ֱٱ C++ α ַ C++98 ϸ ִ κ C++98 Ѵ. 2000븦 Ͽ ڹ, C# Ͽ ǹ Ȱ ȿ C++ ū ȭ üǾ ־. ֽ ϱ ־ Ż .
2003, 2007 ָ Ȯϰ Ŵ ϸ ǥ ̺귯 ū ȭ . κ ڵ ñ Ե ʾ C++98 ӹ ־. ̻ ʿ ʾҾ.
C++ 2011 ̸ ߴ. 2000 ۾ ۼϿ C++0x ҷ ᱹ 2011 ǥؾ Ȯߴ. ǥؾ C++11̶ θ. Ŀ C++14, C++17 ǥؾ ǥǾ C++11 ̹ ߰ ణ Ȯϰ ϴ ܼ̾.
ֱٿ C++20 ǥؾ ٽ ǥ ̴. ᱹ μ C++11 ȭ ֽ ̴. ⼭ C++98 ̹ ȴٰ ϰ C++11 Ŀ ߰ Ѵ. Ϸ غ ʿ ־ Ʃ 2019 ǽ ִ.
for
ٸ foreach شϴ ̴. 迭̳ ÷ ÷ڷ ȸ ʰ Ҹ ٷ Թ ϳ ȸѴ. .
for (Ÿ : ÷) { }
÷ ȸ ̵ ǥ 迭̶ ϸ ȴ. 迭 ü ȸϸ 迭 Ҹ ϳ Ͽ η Ѵ. 迭 Ϻθ ȸϴ 幰 ü 迭 ȸϴµ ϴ.
#include <stdio.h>
int main()
{
int ar[] = { 8, 9, 6, 2, 9 };
for (int i : ar) {
printf("%d ", i);
}
}
=> 8 9 6 2 9
迭 ar Ҹ ߴ. i ÷ 0, 1, 2, 3, 4 ƴ϶ 8, 9, 6, 2, 9 Ұ ʴ Թ´. ar ũ⳪ ȸ ʿ Ҹ аڴٴ ȴ.
Ÿ 迭 ҿ ̴̻. 迭 ar ȸϴ i Ÿ int ̴. ƾ ϴ ƴϸ ȣȯ ŸԵ ִ. ٸ ʿ ȯ ϾǷ ٶ ʴ.
for (double i : ar) {
printf("%f ", i);
}
=> 8.000000 9.000000 6.000000 2.000000 9.000000
ο 迭 Ұ Թ 纻̴. б ƴϾ 纻 ٲ۴ٰ ؼ ʴ´.
for (int i : ar) {
i = i * 2;
}
printf("%d ", ar[0]);
=> 0
ȸϸ ar Ҹ 2 . i 8 Թ 16 ǰ 9 Թ 18 迭 ġ ʴ´. ar[0] 8̴.
ȸ߿ 迭 ؾ Ѵٸ ۷ Ѵ. ۷ 纻 ƴ϶ Ű ̹Ƿ ۷ 迭 ִ.
for (int& ri : ar) {
ri--;
}
for (const int& rri : ar) {
printf("%d ", rri);
}
=> 7 8 5 1 8
迭 1 ҽ״. 迭 ٽ 迭 Ұ 1 ִ. б⸸ Ѵٸ ۷ Ѵ.
۷ ͺٴ ׳ 纻 ȿ̴. Ŵ ü ü 纻 ϴ ͺ ۷ д ϰ ȿ̴.
for ݺ̹Ƿ ο ǿ break continue ִ. ڵ 6 dz ٰ 2 ŻѴ.
for (int i : ar) {
if (i == 6) continue;
printf("%d ", i);
if (i == 2) break;
}
=> 8 9 2
for 迭 ÷ڰ ƴ Ҹ Թ ȸϱ ο ° . ˾ƾ Ѵٸ ̶ for ۿ .
for (int i = 0; i < sizeof(ar) / sizeof(ar[0]); i++) {
printf("%d° = %d\r\n", i, ar[i]);
}
̶ i ar 迭 ÷ڸ ȸϸ ar[i] д´. for ÷ڿ Ұ ִ.
0° = 8
1° = 9
2° = 6
3° = 2
4° = 9
밳 ٴ Ұ ʿϹǷ for ε 迭 ִ.
auto Ÿ
auto Ű ԵǴ Ÿ ڵ ϴ Ÿ̴. ʱ̳ 迭 Ÿκ Ÿ ڵ ִٸ auto Ű常 ȴ.
#include <stdio.h>
int main()
{
auto i = 1234;
auto d = 3.14;
printf("%d\n", i);
printf("%f\n", d);
}
=> 1234
3.140000
1234 ʱȭ i ̸ 3.14 ʱȭ d Ǽ̴. ̷ int, double Ÿ ʿ auto ָ ȴ. auto Ÿ ƴ϶ ڵ ߷ϴ ̴. ߷ ٰŰ ־ ϸ a Ÿ ̴.
auto a; //
auto Ÿ ߷ ϱ ̴. int double ªƼ ø Ÿ . .
#include <stdio.h>
#include <iostream>
#include <vector>
using namespace std;
int main()
{
const char* str = "korea";
vector<char> vc(&str[0], &str[5]);
for (std::vector<char>::iterator it = vc.begin(); it != vc.end();it++) {
cout << *it;
}
}
ȸϴ ݺ Ÿ std::vector<char>::iterator Ǿ ־ ʹ ϴ. Ϸ vc Ÿ ˰ Ƿ vc.begin() Ÿ ϴ ߷ ̶ auto ŸԸ ָ ȴ.
for (auto it = vc.begin(); it != vc.end(); it++) {
cout << *it;
}
ڵ尡 ª б . ø ø ϸ ݺڳ Ÿ ° ƴ϶ ư . ̷ Ϸ " ˾Ƽ " ϴ ٷ auto̴. ܼ ݺ̶ ڵ庸ٴ for ª ϴ.
for (char c : vc) {
cout << c;
}
C++ 14 Լ ŸԿ auto Ű带 ִ. ü ϴ ŸԵ ߷ ִ. 溸 ΰ ų ־ ʴ .
auto Add(int a, int b)
{
return a + b;
}
C++ C auto Ű尡 ־. C auto ڵ Ǿٰ ҸǴ ǹѴ. ڵ ҷ ܺ external ݴ ǹ̿. δ auto ʾƵ auto ⺻̾ ʴ Ű忴. C++ 11 auto ǹ̰ ٲ Ÿ ڵ ߷϶ Ǿ. ̴.
auto int i = 1234;
auto Ÿ̰ int Ÿ̾ Ÿ ڰ ִ ̸ 翬 ̴. C C++ ȵȴ. ƹ Ű忴µ ̷ 뵵 ٲپ ̽ ƴϴ.
nullptr
Ͱ Ÿ ͷ̸ NULL̳ 0 ̴. Ͱ ȿ и ǥ ִٴ ִ. .
#include <stdio.h>
#include <malloc.h>
int main()
{
void* mem = nullptr;
mem = malloc(100);
if (mem == nullptr) {
return;
}
free(mem);
}
ʱȭ nullptr и ־ ȴ. 0̳ NULL Ÿ и ָ ʴٴ ִ.
#include <stdio.h>
void func(int a) { printf("%d\n", a); }
void func(int *p) { printf("%p\n", p); }
int main()
{
func(0);
func(nullptr);
func(NULL); // ָ
}
func Լ func Լ εǾ ִ. ¿ func(0) func(nullptr) Լ ȣ ϴ. func(NULL) Լ ȣ Ȯϰ ϱ ƴ.
NULL ǰ µ C++ 0̸ C (void *)0 ǵǾ ־ ϰ ϴ. ̷ ̼ DZ Ѵ.
ȣȯ ؾ ϹǷ ε NULL̳ 0 ִ. Ϳ ǥ nullptr ǥϴ ϴ.
Ŭ
C enum ̾ . ٸ Ÿ ߺǾ ȵǸ ־ ȥ.
enum Origin { EAST, WEST, SOUTH, NORTH };
enum Race { Terran, Protoss, Zerg };
int o = SOUTH;
o = Zerg;
printf("%d", o); // 2
ϴ Origin ϴ Race ߴ. ǹϴ SOUTH ǹϴ Zerg 2 ̻ ִ. ̷ SOUTH κп Zerg ʾ ϴ.
Ư Ƿ ̸ ־ ߺǾ ȵȴٴ ൵ ִ. ̴. EAST Origin 0 ̹ ǵǾ ִµ Race 3 ٽ Ϸ ߺ ̴.
enum Race { Terran, Protoss, Zerg, EAST };
Ŵ Ʈ ⼭ ϸ Ī ߺ Ȯ . ̷ ϱ θ ٿ oEast, rTerran οؾ ϴµ ϴ. ̷ ؼϱ enum class ߴ.
- Ŭ ҼӵǸ ƴϾ ٸ Ī ߺǵ .
- Ī :: ĪѴ.
- ȣȯ ʾ ij ؾ߸ ִ.
C µ C++ Ŭ ִٴ ū ̴. Ŭ ϸ . Ҽ Ƿ 빮ڷ ʾƵ .
enum class EOrigin { east, west, south, north };
int o = (int)EOrigin::south;
printf("%d", o); // 2
enum Ű class Ű带 ߰Ͽ Ѵ. ̷ Ǹ Ī ܵδ EOrigin::south Ҽ ݵ Ѵ. ȣȯ ʾ ijؾ ϸ Ǽ ٿ ش.
⺻ int Ÿ ũⰡ ϳ 4Ʈ Ѵ. 40ﰳ ϴ ʹ ũ. ̽ Ÿ Ͽ ̳ ִ.
enum class EOrigin : char { east, west, south, north };
printf("%d", sizeof(EOrigin::south)); // 1
EOrigin Ÿ char ߴ. char ŸԸ ص 256 ¸ ִ. sizeof ũ⸦ 1Ʈ ִ. ˶ϰ ִٴ Ҹ ʴ. 32Ʈ ȿ ϸ ũ⸦ ̸ ӵ .
Ŭ ٴ Ǿ ٰ ؼ C enum ƴϴ. ʰ 뵵 ٸ Ŭ Ȳϰ ɸŸ. Ŭ üѴٱ⺸ٴ ʿ信 ٶϴ.
ٴ Լ ϰ ǥϴ ǥ̴. C#̳ ڹٿ ԵǾ C++ ټ ʰ ԵǾ. .
[ĸó](μ)->Ÿ { ü; }
ᱹ Լ ִ Ҵ ԵǾ ִ ̴. ϰ ϴ Լ ٷ ۼ .
int (*add)(int, int) = [](int a, int b)->int {return a + b; };
printf("%d\n", add(2, 3)); // 5
a, b int Ÿ ϴ ٽ ϰ Լ add ߴ. Թ̱ ڿ ݷ ʿϴ.
add ϴ Լ ̴. add Լó ִ. Լ Ÿ ǰ ڸ ׳ auto Ϸ Ÿ ߷ ش.
auto add = [](int a, int b)->int {return a + b; };
ٴ ִ ª ̾ Ҹ ִ. Ÿ ϴ.
auto add = [](int a, int b) {return a + b; };
C#̳ ڹٿ μ Ÿ̳ return Ű . μ μ ȣ ְ Ÿ void Լ return Ű嵵 ִ. μ ϵ ܼ ¹ ٷ Ͽ ȣ ϴ ڵ̴.
[] { printf("Hello C++"); }();
ٰ Ϲ Լ ٸ ǹ ٷ ζȭϿ Ŀ ִٴ ̴. printf μ ٸ ϰ μ Ѱ ȣ ȴ.
printf("%d\n", [](int a, int b)->int {return a + b; }(2, 3));
ĸó ܺ ٽĿ ٽ ⵿ֱ ش ִ ̴. .
#include <stdio.h>
auto getfunc()
{
int base = 1;
auto add = [base](int a, int b) {return a + b + base; };
return add;
}
int main()
{
auto add = getfunc();
printf("%d\n", add(2, 3)); // 6
}
base getfunc ̸ ٽ ο ϰ ִ. ٵ getfunc ο ٰ base ִٰ . ĸó [base] Ͽ ٽ Ǵ ȿ base ȿϵ ־ Ѵ.
main getfunc ȣϿ ٽ add ϰ add 2, 3 base 6 ߴ. base getfunc main add ȣ ϰ ִ. ĸó ش ٽ ȿϵ δ ̴.
[ ] ȣȿ ĸó = ȣ ܺ 纻 ϰ & ȣ ܺ Ѵ. ̺Ʈ ڵ鷯 ٷ ڵ鷯 о ĸó Ѵ.
. ̰ ȴ. 연수동소개팅
흥업면번개만남
월암동출장만남
밤길출장샵 | 영주출장마사지 | 종로출장안마
학장동성인맛사지
석바위시장역출장대행
이쁜여자사귀는법
육가04,교토버스투어,여성누드
건대마사지
안양콜걸샵 출장대행 안산출장만남
오토코노코 강간 서귀포성인출장마사지 송파여대생출장
스마트폰 만남어플
마블세면대
공주출장샵
아리19 짤
여권사진
부수입만들기 | 재테크 관련 도서 | 신뢰의 P2P 유니어스펀딩
아기이불
동래
겨울준비
재테크사기 | 대출나라 광고 | 집에서 1억 리얼 후기
믹스커피
팔로우늘리기
육아맘일상
신사
제천콜걸샵
섹스카페
거제출장안마
PVC시스템창호
|