hljs.initHighlightingOnLoad();

문법

C++

[C++ 기초 플러스] Chapter 08 프로그래밍 연습 풀이

01.(문제를 잘 이해한 게 맞는지 모르겠다.)// 책에 서술된 대로 구현#include #include using namespace std;int cnt;void print(const string* s, int n = 0){ if (n == 0) { cnt++; cout > "; cout > "; cout  결과02.// 책에 서술된 대로 구현#include #include using namespace std;struct CandyBar{ string maker; double weight; int calories;};void SetCandyBar( CandyBar& candyBar, const char* ca..

C++

friend 함수와 연산자 오버로딩

friend 함수C++에서 클래스의 private 및 protected 멤버에 접근할 수 있도록 특별히 허용된 함수이다. 이를 연산자 오버로딩에 활용할 수 있다.왜 friend 함수가 필요할까?일반적으로 연산자 오버로딩은 멤버 함수 또는 비멤버 함수로 구현된다.멤버 함수로 오버로딩할 경우 연산자 왼쪽에 있는 객체가 반드시 해당 클래스의 객체여야 한다.예)// 왼쪽: 객체, 오른쪽: 객체Point(3, 4) + Point(3, 5) 하지만 비멤버 함수로 오버로딩할 경우 클래스의 비공개 멤버에 접근하려면 friend 키워드를 사용해야 한다.// 왼쪽: 클래스 객체가 아님, 오른쪽: 객체3 + Point(3, 4)3 + point(3, 4)객체가 아닌 기본 자료형(예: int)도 Point 클래스의 frien..

C++

함수 원형은 왜 필요한가?

함수 원형은 컴파일러에게 함수의 인터페이스를 알려 준다. 즉, 리턴값이 있으면 그 리턴값의 데이터형을 컴파일러에게 알려 준다. 또한 매개변수의 개수와 각 매개변수의 데이터형을 컴파일러에게 알려 준다. 예double cube(double x);int main(){ double volume = cube(side);}  1.함수 원형은 cube()가 하나의 double 형 매개변수를 가진다는 사실을 컴파일러에게 알려 준다. 프로그램이 cube()에 매개변수를 제공하는 데 실패하면, 컴파일러는 함수 원형에 근거하여 에러를 검출한다. 2.cube() 함수는 계산을 끝냈을 때 리턴값을 CPU의 레지스터나 메모리의 어떤 지정된 위치에 넣는다. 그러면 호출한 함수가 그 위치에서 값을 꺼내온다. cube()가 doubl..

C++

잡다한 문법 지식들 (1)

문자와 for문for(ch = 'a'; ch strcmpASCII 코드에서는 대문자가 소문자보다 코드가 낮기 때문에 조회 순서가 더 빠르다. 따라서 이런 것도 가능하다.// str1이 str2보다 아스키 코드 상 앞 순번의 문자열인지strcmp(str1, str2) 0cinint n;cin >> n; 이 경우에 사용자가 수를 입력하는 대신 단어를 입력하면 무슨 일이 벌어질까?n의 값은 변하지 않는다.입력 큐에 잘못된 입력이 그대로 유지된다.cin 객체의 에러 플래그가 설정된다.cin 메서드 호출이 false를 리턴한다.cin 메서드가 false를 리턴한다는 사실은, 수를 읽어들이는 루프를 종료시키기 위해 수가 아닌 입력을 사용할 수 있다는 것을 의미한다. 예// 숫자 말고 다른 문자 입력시 루프가 멈춤..

C++

getline()과 cin

getline()과 cin은 C++에서 입력을 처리하는 주요 방법이다. 두 함수는 입력 방식과 동작에서 차이가 있으며, 각각의 장단점이 있다.기본 차이cin공백이나 개행 문자(엔터)를 만나면 입력을 종료한다.단어 단위로 입력을 처리하며, 문자열 입력 시 공백은 허용하지 않는다.std::string input;std::cin >> input; // 공백 전까지 입력받음   2. getline()개행 문자(엔터)까지의 모든 입력을 한 줄로 처리한다.이때 개행 문자는 저장하지 않는다.개행 문자는 널 문자로 대체된다.공백을 포함한 전체 문자열을 입력받을 수 있다.std::string input;std::getline(std::cin, input); // 한 줄 전체를 입력받음장단점 비교1. cin장점빠르고 ..

C++

auto

autoauto는 C++에서 타입을 자동으로 추론하도록 도와주는 키워드이다. C++11부터 도입되었으며, 코드를 더 간결하게 만들고 타입을 명시하지 않아도 되는 편리함을 제공한다.기본 사용법auto는 변수 선언 시 초기값의 타입을 기반으로 컴파일러가 해당 변수의 타입을 추론한다.auto x = 10; // x는 int 타입auto y = 3.14; // y는 double 타입auto z= "hello"; // z는 const char* 타입주요 특징1. 초기값이 반드시 필요함auto를 사용하려면 반드시 초기화가 필요하다. 초기화 없이 선언하면 컴파일 오류가 발생한다.auto a; // 오류: 초기값이 없어서 타입을 추론할 수 없음2. 타입 복잡성 감소복잡한 타입(예: 반복자, 함..

C++

static_cast<typeName>(value)

static_cast는 C++에서 제공하는 형 변환 연산자 중 하나로, 특정 타입으로 변환을 수행할 때 사용된다. 다른 캐스트 연산자(dynamic_cast, reinterpret_cast, const_cast)와 달리, 컴파일 타임에 타입 검사를 수행하므로 안전성이 높은 편이다.static_cast의 특징컴파일 타임에 작동:변환이 가능한지 여부를 컴파일러가 확인한다.잘못된 변환 시 컴파일 오류가 발생하여 프로그램의 안전성을 높인다.명시적인 변환:암시적인 변환이 가능한 경우에도 사용하여 의도를 명확히 표현할 수 있다.가독성을 향상시키고, 실수를 줄이는 데 도움을 준다.런타임 검사 없음:static_cast는 런타임 타입 검사를 수행하지 않으므로, 변환이 가능한지 컴파일러가 보장하지 않는 경우 잘못된 변환..

(ꐦ •᷄ࡇ•᷅)
'문법' 태그의 글 목록