조무위키
조무위키
둘러보기
대문
최근 바뀜
임의의 문서로
미디어위키 도움말
도구
여기를 가리키는 문서
가리키는 글의 최근 바뀜
특수 문서 목록
문서 정보
행위
문서
토론
편집
역사 보기
C++
편집하기
경고:
로그인하지 않았습니다. 편집을 하면 IP 주소가 공개되게 됩니다.
로그인
하거나
계정을 생성하면
편집자가 사용자 이름으로 기록되고, 다른 장점도 있습니다.
스팸 방지 검사입니다. 이것을 입력하지
마세요
!
{{공대생}} {{빠름}} [[C언어]]의 확장팩...이였던 시절도 있었으나 지금은 C언어와는 완전히 다른 언어라고 봐도 좋을정도로 바뀌었다. 초급 수준의 문법은 C언어에서 쓰던거 C++에서 그대로 굴러도 상관없으나 그 이상으로 넘어가면 C++ 전용 문법을 굴리는게 편하다. [[.Net 프레임워크]]전용버전으로 C++/CLI라는 게 있다. 이건 CRL에서 동작하기 때문에 [[가비지 컬렉터]]가 작동한다. 마소가 객체지향 절차지향 양다리 걸치는 새끼를 만들어 놓았다. 구동프로그램은 비주얼스튜디오나 DEV_C++가 편하다. ==c와의 차이점== c랑 c++이 헷갈린 중생들을 위한 특징을 정리하자 ===class 지원=== c++에서는 <source lang="cpp"> class Abc { int a, b, c; void k() { a = b+c; } }; Abc abc[1000]; for (int i = 0; i < 1000; i++) abc[i].k(); </source> 이렇게 쓸수 있는걸 c에서는 <source lang="cpp"> void k(int &a, int b, int c) { a = b + c; } int a[1000], b[1000], c[1000]; for (int i = 0; i < 1000; i++) k(a, b, c); </source> 이렇게 써야 한다 좆같다 <source lang="cpp"> typedef struct Abc { int a, b, c; }Abc; void k(Abc* abc) { abc->a = abc->b + abc->c; } Abc abc[1000]; for (int i = 0; i < 1000; i++) k(&abc[i]); </source> 이렇게 할수있어 병신아 ===operator overloading 지원=== c++에서는 <source lang="cpp"> class Abc { int a,b,c; Abc& operator+(Abc& m) { a+=m.a; b+=m.b; c+=m.c; return *this; } }; Abc a, b, c; c = a + b; </source> 이렇게 쓸수 있는걸 c에서는 <source lang="cpp"> int a1, b1, c1; int a2, b2, c2; int a3, b3, c3; a3 = a1 + a2; b3 = b1 + b2; c3 = c1 + c2; </source> 이렇게 써야 한다 좆같다 ===template 지원=== 쉽게 말해서 이게 지원 안되면 stl 라이브러리를 죄다 쓸 수 없다 또 뭐있냐? 아 몰랑 니가 직접 찾아봐 ===한줄요약=== C언어 + [[DLC]] 확장판 ==특징== {{어려운 게임 }} 프로그래밍 업계에 자주 쓰이는 언어들 중에서 가장 난이도가 높다. 비교적 로우레벨 언어다보니 최적화가 잘 된다. 게임 개발, 애플리케이션 개발에 많이 쓰인다. 라이브러리 의존성이 개좆같다. 파이썬은 pip Rust는 cargo 심지어 vim도 Vundle랍시고 패키지관리자가 있는데 c++는 그런거 없고 매번 직접 다 컴파일해야한다. 리눅스쯤 되면 apt에서 dev붙은 라이브러리로 어떻게 제공해주긴 하지만 ... ㄴ 윈도라고 꼭 컴파일할필요는 없고 "라이브러리명 windows binary" 이런식으로 검색해보면 MinGW든 MSVC든 누가 컴파일해놓은게 있으니 그거 가져다쓰면 편함 고마워요! 이런 좆같은 라이브러리 의존성을 해소하고 독립적인 관리자를 제공할뿐만아니라 기존의 좆같은 c++의 문법구조대신 scheme기반의 문법구조를 쓰는 [[러스트(프로그래밍 언어)]]쓰자 쓰는 사람도 아직 몇 없어서 있어보인다 ㄴRust 빠르냐? ㄴ 부실하지만 빠르다 ==점유율== [[Python]], [[C#]]처럼 C++보다 더 쉬운 언어들이 널리 쓰이기 시작하면서 해마다 점유율이 떨어져 가고있다. 그래도 여전히 자주 쓰이는 언어 3위이다. 참고로 2016년 1월 현재 점유율 1위는 [[Java]], 2위는 [[C언어]]이다. <br>ㄴ시발 자바배울걸 그랬나;; ㄴ 2019년 10월 기준 4위다. 파이썬이 3위로 올라감 ==Hello, world 출력== 새로운 언어를 배울 때 가장 기초적인 문법을 제대로 배웠는지 이해하는 차원에서 한번씩 짜보는 프로그램이다. 이 글을 읽는 너도 한번 이 코드를 짜고 이해해 보자. <source lang="cpp"> /* * 8탭좀 쓰지 마라 십새기야 */ #include <algorithm> #include <iostream> #include <vector> #include <string> int main() { char pieces[16] = {'H', 'e', 'l', 'o', ',', ' ', 'W', 'r', 'd', '!'}; std::vector<bool> bits; std::string hello_world = "0000000100100010001101000101011000110111001010001001"; std::for_each(hello_world.begin(), hello_world.end(), [&bits](char& c) { bits.push_back(bool(c - '0')); }); for(unsigned i = 0; i < bits.size() / 4; ++i) { auto semi_byte = bits[i * 4 + 3] + bits[i * 4 + 2] * 2 + bits[i * 4 + 1] * 4 + bits[i * 4] * 8; std::cout << pieces[semi_byte]; } return 0; } //ㄴ 저게 어떻게 기초적인 문법이냐 //ㄴ 허세쩜; //ㄴ 문법 나치 같은 새퀴 조까치 자네 //ㄴ 이해해보자는 거잖아 세상에 어떤 개줫지체장애인새끼가 저따구로 코드를 짜겠냐 //ㄴ 어떻게 하면 이따구로 짤 생각을 했을까 //ㄴ병신새끼 메모리를 그렇게 버리고 싶나? </source> === 그냥 간단하게 짜자 === 누가 저따위로 메모리를 낭비함 <source lang="cpp"> #include <iostream> using namespace std; int main(void) { cout << "Hello World!" << endl; } </source> === 더 간단하게 === iostream 개쓰레기 cin/cout으로 입출력하면 속도 걸레짝된다. 0ms 띄울 수 있는 문제를 4ms 띄우고, 원래 맞출 수 있는 문제를 시간초과로 둔갑시킬 수 있는 쓰레기 코드. 먼소리야;; std::ios_base::sync_with_stdio(false) 를 main 함수 안에다 집어 넣으면 printf, scanf랑 거의 비슷하거나 오히려 더 빨라진다. 어짜피 그정도 속도차이는 알고리즘 풀이 사이트를 제외하고는 신경쓸 필요 없다. 그러니까 그냥 iostream 써라 정말 좋다 ㄴ ㅋㅋ 살다살다 iostream 을 병신이라고 욕하는새끼를 다봣노, 그냥 기계어로 코딩해라 십새야 0101111010010101001 존나느린 C++ 왜쓰노 백준에서나 쓰지마셈 <source lang="cpp"> #include <cstdio> int main() { std::printf("Hello World!\n"); //혹은 std::puts("Hello World!"); 라 해도 되고, 줄 아래로 더 쓸거 아니면 \n 안붙여도 됨. return 0; } </source> == 이새끼를 궁극적으로 쓰는 이유 == 개인적인 이유지만 큐나 리스트만들기 존나 귀찮을때 STL 에서 꺼내다 쓰면 존나 편하다 하앜 과제할때 개꿀따리 [[분류:프로그래밍 언어]]
요약:
조무위키에서의 모든 기여는 CC BY-SA 4.0 라이선스로 배포된다는 점을 유의해 주세요(자세한 내용에 대해서는
조무위키:저작권
문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요.
또한, 직접 작성했거나 퍼블릭 도메인과 같은 자유 문서에서 가져왔다는 것을 보증해야 합니다.
저작권이 있는 내용을 허가 없이 저장하지 마세요!
취소
편집 도움말
(새 창에서 열림)
이 문서에서 사용한 틀:
틀:공대생
(
편집
)
틀:빠름
(
편집
)
틀:색
(
편집
)
틀:알림 상자
(
편집
)
틀:어려운 게임
(
편집
)
틀:어려운게임
(
편집
)
틀:폰트
(
편집
)