성능 측면: 디스어셈블리를 진행해 본다면 사실 상 동일하다. 성능적 차이는 거의 없음편리성 측면: 참조 승! (참조: . vs 포인터: ->)초기화 여부참조 타입은 대상이 있어야 한다. 따라서 참조 변수 초기화와 동시 참조할 대상을 지정해야 한다.포인터 타입은 포인터
아래와 같은 함수를 추가해본다.컴파일러는 char a\[] 매개변수를 char \*a로 바꿔준다.char\[] -> char\*따라서 Test(test1)은 컴파일 에러가 난다. test1은 const 포인터형이기 때문이다. 반면 Test(test2)는 정상적으로 컴파
컴퓨터 기술에서 스트림은 연속적인 데이터의 흐름 혹은 데이터를 전송하는 소프트웨어 모듈을 일컫는다. C++는 스트림(stream)이라는 정교한 입출력 매커니즘을 제공한다. 스트림은 입력 스트림과 출력 스트림으로 나뉜다. 입력 스트림: 키보드, 네트워크, 파일 등 입력
"명품 C++ 프로그래밍" / 황기태 / 생능출판istream 클래스도 >> 연산자 외에도 다양한 입력 멤버 함수를 가지고 있다. \>> 연산자는 공백 문자(<space>, <Tab>, <Enter> 키 등 공백 문자 키를 읽을 수 없지만 다른 멤버 함
간단히 파일을 읽고 쓰려면 <<, >> 연산자가 편리<<, >> 연산자는 오직 텍스트 파일에 대해서만 작동한다.
C++ 표준C++98/03 -> C++11/14 -> C++17 -> C++20/23C++98/021998년에 표준화, 2003년에 수정 적용C++ 최초의 표준화. 일반적인 C++ 코딩 내용이 대부분 포함.C++11/142011년 표준화, 2014년 추가로 개선되어 발
auto 키워드는 C++ 11 표준부터 의미가 수정되어, 변수 선언문으로부터 변수의 타입을 추론하여 결정하도록 지시. auto는 복잡한 형식의 변수 선언을 간소하게 해주며, 타입 선언의 오타나 번거로움을 줄일 수 있게함. 컴파일러는 R-value를 통해 추론하여 변수의
벡터와 같은 컨테이너와 궁합이 좋아짐중괄호 초기화를 통해 구현한 생성자들을 호출할 수 있다. 여기서 MyClass에서 이니셜라이저를 통한 생성자를 추가한다면,그리고MyClass myClass = { 1, 2 }; 호출의 경우 멤버변수 c가 쓰레기 값으로 채워진다.
과거에는 null을 의미하는 값을 포인터 변수에 전달하기 위해 0 또는 NULL을 사용하였다. 참고로 NULL은 단순히 "발생하는 문제점과 nullptr로 해결하는 방법은 다음과 같다.
직관성 측면에서 using 키워드를 사용하면 좋다.
기본적으로 int형으로 간주하지만 다음과 같이 크기를 바꿀 수 있다. enum의 이름은 enum 블록 외 전역으로 퍼진다.따라서 서로 다른 enum 블록으로 묶여도 이름이 같으면 충돌이 발생할 수 있다.기본 enum은 'unscoped enum'이라 할 수 있다. 다음
C++11부터 추가.C언어 관점: C 표준에서는 대입 연산자(=)를 기준으로 왼쪽과 오른쪽에 모두 사용될 수 있는 값을 L-Value, 오른쪽에만 사용될 수 있는 값이 R-Value라 정의.C++ 관점에서는 위 글이 완전히 틀린 얘기는 아니지만 잘못된 이해이며 C++
스택 메모리를 할당 받아 객체를 생성하는 방법정적 메모리 할당 방법 중 하나메모리의 크기가 하드 코딩되어 있기 때문에 프로그램이 실행될 떄 이미 해당 메모리의 크기가 결정스택에 생성된 객체는 스코프를 벗어날 때 해당 객체의 소멸자가 호출되어 자동으로 소멸(명시적으로도
new_c_questionbrgeeksforgeeks + (입력)C 언어의 getchar() 함수버퍼에 데이터가 있을 때: 버퍼의 가장 앞 데이터 반환버퍼에 데이터가 없을 때: 엔터('\\n')가 입력될 때까지 사용자로부터 문자를 받아서 버퍼에 저장하고, 버퍼의 가장
참조는 널일 수 없다.참조는 선언과 동시에 초기화되어야 한다.상수도 참조할 수 있다.const 참조 변수를 통해 상수 또한 참조할 수 있다.복사 생성자도 엄연한 함수이다. 복사 생성자에서 값으로 인수를 전달하면(복사 생성자의 파라미터가 참조형이 아니라면) 복사 생성자에
C++에서 구조체는 클래스와 동일한 방식으로 작동한다. 하지만 사용하는 철학에 따라 차이를 보인다. 바로 '구현 세부 정보'를 공개하느냐 숨기느냐 차이이다.구조체는 기본적으로 사용자에게 구현 세부 정보를 숨기지 않는 반면, 클래스는 기본적으로 숨겨서 액세스를 방지한다.
private 접근 지정자로 선언된 소멸자를 private 소멸자라고 한다. 객체의 파괴를 막고 싶을 때 소멸자를 private으로 지정할 수 있다. 이 private 소멸자는 언제 사용되는 것일까?클래스의 객체 파괴를 작성자가 직접 제어하고 싶을 때마다 소멸자를 pr
가상 함수는 파생 클래스에서 오바라이딩할 수 있는 함수이다.가상 함수는 계층 구조에서 런타임 다형성을 실현시켜준다. 기본 클래스에서 함수가 가상 함수일 경우 포인터 또는 참조의 선언된 형식에 관계없이 참조된 객체의 실제 형식에 따라(가장 가까운 가상 함수 구현 클래스의