JiwonDev

1. Hello World

by JiwonDev

1. Main ์ฝ”๋“œ

#include <iostream> // std
using namespace std; // std::cout , std::endl
int main()
{
	cout << "Hello World" << endl;
	return 0;
}

Cpp์—์„œ๋Š” std::cout์„ ์ด์šฉํ•ด์„œ ์ถœ๋ ฅ์„ ํ•œ๋‹ค.

 

 

2. Cout

์ฝ˜์†”์ฐฝ์— ์ถœ๋ ฅ ํ•œ ํ›„ ostream๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๊ฐ OS๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์‹œ์Šคํ…œ ์ฝœํ•จ์ˆ˜ [ Window API - WriteFile() , Linux - system call - Write() ]๋ฅผ ์ด์šฉํ•œ๋‹ค.

#include <cstdio>

using namespace std; // std::cout ์›๋ฆฌ ํŒŒ์•…์„ ์œ„ํ•œ ๊ตฌํ˜„ ์˜ˆ์ œ
namespace std {
    class ostream {
    public:
        ostream &operator<< (int n) {
            printf("%d", n);
            return *this;
        }

        ostream &operator<< (double d) {
            printf("%f", d);
            return *this;
        }
    };

    ostream cout;
}

int main () {
    cout << 3; // ostream& operator<<(int n) ํ˜ธ์ถœ๋จ
    cout << 3.4; // ostream& operator<<(double d) ํ˜ธ์ถœ๋จ
    cout << 3 << 4; // ์ž๊ธฐ ์ž์‹ ์„ ์ฐธ์กฐ๋กœ ๋ฆฌํ„ดํ•˜๋ฏ€๋กœ ์—ฐ์† ์ถœ๋ ฅ ๊ฐ€๋Šฅ
}

ํ•ด๋‹น ํ•จ์ˆ˜๋Š” ์œ„์™€ ๊ฐ™์ด ์ •์˜๋˜์–ด์žˆ๋‹ค.

 

3. Namespace

cpp์—์„œ ์ด๋ฆ„ ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ œ๊ณตํ•˜๋Š” Scope(์ง€์—ญ,์ „์—ญ ๋ฒ”์œ„) ๊ธฐ๋Šฅ์ด๋‹ค.

namespace { } ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•˜๊ณ 

using ์ด๋‚˜ name:: (์Šค์ฝ”ํ”„ ๋ถ„์„ ์—ฐ์‚ฐ์ž)์„ ์ด์šฉํ•˜์—ฌ ํ•ด๋‹น ๋ฒ”์œ„์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

namespace Foo { // ๋„ค์ž„์ŠคํŽ˜์ด์Šค 1
    int doSomething(int x, int y) {
        return x + y;
    }
}

namespace Goo { // ๋„ค์ž„์ŠคํŽ˜์ด์Šค 2
    int doSomething(int x, int y) {
        return x - y;
    }
}

int main(void) { // ์ค‘๋ณต๋œ ์ด๋ฆ„(doSomthing)์—์„œ ์›ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•.
    std::cout << Foo::doSomething(4, 3) << '\n';
    std::cout << Goo::doSomething(4, 3) << '\n';
    return 0;
}

์ฐธ๊ณ ๋กœ namespace std { } ์•ˆ์—๋Š” Cpp์˜ ๋ชจ๋“  ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ์ •์˜๋˜์–ด ์žˆ๋‹ค. 

#Using์„ ์ด์šฉํ•˜์—ฌ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•. 

namespace Foo {
    int doSomething(int x, int y) {
        return x + y;
    }
    int doHello(){
        return 1;
    }
}

//#์˜ˆ์ œ 1.
int main(void) {
    using Foo::doSomething;
    // ๋Œ€๊ด„ํ˜ธ {} ์•ˆ์— ์ง€์ •๋˜์ง€ ์•Š์€ ํ•จ์ˆ˜๋Š” namespace๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.

    std::cout << doSomething(4, 3) << '\n'; // Foo::doSomething
    std::cout << Goo::doSomething(4, 3) << '\n';
    return 0;
}

//#์˜ˆ์ œ 2.
int main(void){
    using namespace Foo;
    // ๋Œ€๊ด„ํ˜ธ {} ์•ˆ์— ์ง€์ •๋˜์ง€ ์•Š์€ ํ•จ์ˆ˜๋Š” namespace๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
    
    std::cout << doSomething(4, 3) << '\n'; // Foo::doSomething
    doHello(); // using์œผ๋กœ ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ง€์ • ํ•ด์คฌ์œผ๋ฏ€๋กœ, ์ž๋™์œผ๋กœ Foo๋กœ ์ธ์‹.
    return 0;
}

using namespace์˜ ๋ฒ”์œ„๋Š” ์ง€์—ญ๋ณ€์ˆ˜, ์ „์—ญ๋ณ€์ˆ˜์˜ ๊ฐœ๋…๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.

์ฐธ๊ณ ๋กœ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ์ถ”์ธก์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜๋Š” ๋ฉ”์„œ๋“œ ์ค‘๋ณต์œผ๋กœ ์ปดํŒŒ์ผ ์—๋Ÿฌ๊ฐ€ ๋œจ๊ฒŒ ๋œ๋‹ค.

 

4. #include <iostream>

์•ž์— ์ด ๋ถ™๋Š” ๋ฌธ์žฅ์€ C์–ธ์–ด ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์•„๋‹ˆ๋ผ ์ปดํŒŒ์ผ ์ „ ์‹คํ–‰๋˜๋Š” ์ „์ฒ˜๋ฆฌ ๋ฌธ์ด๋‹ค.

#include ํŒŒ์ผ๋ช…์€ ์ปดํŒŒ์ผ ํ•  ๋•Œ, ํ•ด๋‹น ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์—ฌ๊ธฐ๋กœ ๋ถˆ๋Ÿฌ์˜ค๋ผ๋Š” ์˜๋ฏธ

 

๋‚˜์ค‘์— ๋ฐฐ์šฐ๊ฒ ์ง€๋งŒ cpp์—์„œ๋Š” ์„ ์–ธ๋ถ€(ํ—ค๋”)์™€ ๊ตฌํ˜„๋ถ€(์ฝ”๋“œ)๊ฐ€ ๋‚˜๋ˆ„์–ด์ ธ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์„œ

๋‚ด๊ฐ€ ํ•„์š”ํ•œ ์ฝ”๋“œ์˜ ํ—ค๋”ํŒŒ์ผ๋“ค๊ณผ ๊ตฌํ˜„๋ถ€๋ฅผ include ํ•ด์ค˜์•ผ ํ•œ๋‹ค. ๊ฐ€๋” ๋Š๋ผ๋Š”๊ฑฐ์ง€๋งŒ, ์‚ฌ์šฉ๋ฒ•์ด ๊ฑฐ์ง€๊ฐ™๋‹ค.

 

๋ณดํ†ต ์‹œ์Šคํ…œ์˜ ํ—ค๋”ํŒŒ์ผ(ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ๋Š” #include <System.h> ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ 

์‚ฌ์šฉ์ž ๊ฐœ์ธ์˜ ํ—ค๋”ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ฌ๋•Œ๋Š” #include "File.h" ๋˜๋Š” "...PATH/folder/File.h" ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฌผ๋ก  ์ด ๋‘˜์˜ ์ฐจ์ด๋Š” ํ—ค๋”ํŒŒ์ผ ํƒ์ƒ‰ ๋ฒ”์œ„/์ˆœ์„œ์˜ ์ฐจ์ด๋ผ์„œ "System.h"๋กœ ์ž‘์„ฑํ•ด๋„ ํ•ด๋‹น ํŒŒ์ผ์„ ์ฐพ์•„์ค€๋‹ค.

 

์ฐธ๊ณ ๋กœ cpp์—์„œ๋Š” c์–ธ์–ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ตฌ๋ถ„ํ•˜๊ธฐ์œ„ํ•ด์„œ stdio -> cstdio ์ฒ˜๋Ÿผ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

๋˜ํ•œ cpp์—์„œ๋Š” ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ๋Š” <iostream> ๊ณผ ๊ฐ™์ด .h ๋ฅผ ๋ถ™์ด์ง€ ์•Š๋Š”๊ฒŒ ๊ธฐ๋ณธ์ด๋‹ค.

'๐ŸŒฑBackend > CPP' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

4. STL  (0) 2020.12.29
3. ์˜ˆ์™ธ์ฒ˜๋ฆฌ  (0) 2020.12.29
3. Class  (0) 2020.12.28
2. Cpp์˜ ๋…ํŠนํ•œ ์‚ฌ์šฉ๋ฒ•  (0) 2020.12.26

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

JiwonDev

JiwonDev

ํ™œ๋™ํ•˜๊ธฐ