목록All (635)
Brise
C언어를 사용하다보면 알게되지만, 제어문의 guard condition에 사용하는 변수는 필연적으로 해당 제어문의 scope가 아닌 제어문 바깥의 scope에 따른다. 최근의 C++17 표준에서는 제어문의 condition에 변수를 선언하여 제어문의 condition이 제어문의 안쪽에서만 사용할 수 있도록 제어문의 condition에 여러 명령을 실행할 수 있도록 하고 있다. 하지만, 가독성이 낮아질 수도 있으니, 상황에 따라 맞게 활용하여야 할 것 같다. // 9_제어문 #include // 39 page.. int foo() { return 0; } int main() { switch (int n = foo(); n ) { case 0: break; case 1: break; } // init con..
많은 고급 언어와 비슷한 문법을 C++에서도 지원한다. // 8_반복문 38 page #include int main() { int x[10] = { 1,2,3,4,5,6,7,8,9,10 }; // C++11 에서 등장한 새로운 반복문 for (auto n : x) // range - for // java, C#의 foreach() 문 std::cout
// 7_함수템플릿1.cpp #include //#include // cl /Tc 소스.cpp : C 언어 // cl /Tp 소스.cpp : C++ 언어 // 모든 타입에 동작하는 함수 만들기 - C언어 // 매크로 함수 //#define square(x) ((x)*(x)) // C++ : int 버전과 double 버전을 따로 만들자 // 방법 1. 사용자가 직접 만들자 // 방법 2. 함수 템플릿을 만들자. 컴파일러가 함수 생성 // Code Bloat : 템플릿 사용시 컴파일러가 너무 많은 함수(클래스) // 를 만들어서 목적코드가 커지는 현상 template T square(T a) { // __FUNCTION__ : 함수 이름을 담은 C++ 표준 매크로. // __FUNCSIG__ : 함수이름+..
// C++함수의 특징 1. 디폴트 파라미터 // 주의 사항 1. 반드시 마지막 인자(오른쪽) 부터 차례대로 // 지정해야 한다. // 주의 사항 2. 함수를 선언과 구현으로 분리할 경우 // 선언부에만 표기한다. (28 page 아래) void foo(int a = 0, int b, int c = 0); // error void foo(int a = 0, int b = 0 , int c = 0); int main() { foo(1, 2, 3); // foo(1, 2); //foo(1); //foo(); } void foo(int a/* = 0*/, int b /*= 0*/, int c/* = 0 */) { } C++은 멀티 패러다임 언어이기 때문에 OOP 적인 특징을 구현하고 있다. 때문에 함수에 대하..
C++에서는 C언어의 const보다 좀 더 strict한 형태의 상수를 지원한다. const의 경우 상수이며 선언할 때 할당한 값 이후로 값을 부여 불가능하지만, constexpr은 컴파일 시 값이 정해져 있어야 한다는 특징을 가지고 있다. #include int main() { int arr1[10]; // ok int size = 10; int arr2[size]; // C89 : 배열의 크기는 컴파일 시간에 알아야 한다. // C99 : 배열의 크기로 변수도 가능 // g++(gcc)지원, VC++ 지원 안함 //sub esp, size const int size2 = 10; // 컴파일 시간 상수 int arr3[size2]; // ok const int size3 = size; // runtim..
// 4_변수1 #include // C++ 은 C언어의 변수 관련 문법을 더욱 발전시켰습니다. struct Point { int x, y; }; int main() { int n1 = 0b1; // 2진수 표기법, C++11 부터 지원 int n2 = 1'000'000; // digit separator, C++11부터 // 원리 : 정수형 리터럴 사이의 ' 는 // 컴파일러가 무시 struct Point p1; // C언어 스타일 Point p2; // C++언어 스타일. //foo() int n3; // 함수 중간에 변수 선언. // C89 : error // C99 : ok. // C++ : ok. } C와 C++ 문법 기준이 개선되며 변수 선언 위치 및 방법이 크게 개선되었..
#include #include // cout, cin, endl 을 위한 헤더 int main() { int n = 10; printf("n = %d\n", n); // C style scanf("%d", &n); // 입력 std::cout
// 2_namespace.cpp - 교재 7 page #include //핵심 1. 관련된 함수/구조체/전역변수 등을 하나의 이름공간에서 // 관리하는 기술 // 2. 이름의 충돌을 막고, 프로그램을 논리적으로 구분할수 있다 namespace Audio { void init() { printf("Audio init\n"); } } namespace Video { void init() { printf("Video init\n"); } } void init() { printf("global init\n");} int main() { init(); Audio::init(); Video::init(); } C언어에서 같은 이름을 갖는 함수나 변수가 중첩되는 이슈를 방지하기 위하여 C++에서는 namespace..