목록C & C++/C++ Basic 8
Formoat's Open Blog
연산자 오버로딩 기본적으로 제공하고있는 연산자들[산술, 논리, 관계 등]을 재정의해 함수로서 호출하는 것. 원형은 함수지만 연산자를 이용하듯 호출할 수 있다. (함수 호출방식으로도 사용가능) 원형이 함수이기 떄문에 다중 정의(오버로딩)가 가능하다. 1. 기존에 존재하지 않는 연산자를 사용해 정의하는 것을 불가능하다. (예: **, ?!, # 등) 2. 정적 함수로 만들 경우 다중 정의가 불가능하다. #include "stdafx.h" #include using namespace std; class CMyData { public: CMyData(int nParam) : nData(nParam) // 변환 생성자 { cout
이동 생성자
변환 생성자 매개변수가 하나뿐인 생성자를 변환 생성자라고 한다. 묵시적 변환을 통해 임시 객체가 생성될 가능성을 가지고 있다. 묵시적 변환이란 어떠한 함수가 있을 때 이 함수의 매개변수의 자료형이 객체라면 실인수의 값은 그 자료형에 맞는 객체를 대입해야 정상적으로 작동하는 데 변환 생성자의 경우 묵시적 변환을 통해서 그 객체가 아닌 객체가 가지고 있는 멤버의 타입으로도 생성자의 호출이 이루어지는 경우를 말한다. #include "stdafx.h" #include using namespace std; class CMyData { public: CMyData(int x) : nData(x) { cout
복사 생성자 말 그대로 객체의 복사본을 생성할 때 호출되는 생성자이다. 클래스를 정의할 때 복사 생성자를 생략할 경우 기본 생성자와 마찬가지로 눈에 보이지는 않지만, 컴파일러가 알아서 복사 생성자를 만들어 준다. 이 때의 복사 생성자는 얕은 복사 생성자이다. 복사 생성자에 대해 알려면 먼저 깊은 복사와 얕은 복사에 대해 알아야 한다. 1. 깊은 복사 (Deep Copy) 객체의 멤버 중 값 형식, 참조 형식 모두 복사하여 새롭게 생성하는 경우를 깊은 복사라고 할 수 있다. 값 형식은 얕은 복사도 마찬가지로 새롭게 만들지만 깊은 복사와의 차이점은 참조 형식을 새롭게 만든다는 점이다. 2. 얕은 복사 (Shallow Copy) 객체의 멤버를 복사하지만 참조 형식의 멤버의 경우 참조하는 포인터를 새롭게 만들고..
클래스 기존의 C언어에 있는 구조체에 함수를 추가(+접근제어자+상속의 개념)시킨 개념이라고 볼 수 있다. // 클래스 선언 방법 class 클래스이름 { 접근제어자: 멤버변수 선언 멤버함수 선언 및 정의(생성자 포함) } #include "stdafx" #include class Test { protected: char name[32]; //멤버변수 int aga; //멤버변수 public: Test(char* _name, int _age) { //생성자 name = _name; age = _age; } void print() { //멤버함수 cout
네임 스페이스 각종 요소들[변수, 함수, 클래스 등]을 하나의 범주로 묶어주기 위한 문법이다. (소속, 구역의 개념) 눈에 보이지 않지만 전역 변수 또는 전역 함수의 경우 전역 네임 스페이스에 소속되어 있다. #include "stdafx.h" #include using namespace std; namespace TEST // 네임 스페이스 선언 방법 { int nData = 10, char ch = 'A', void TestFunc() { ... } } // 다음과 같이 선언된 TEST의 스코프안에 있는 요소들은 TEST 소속이다. int main() { cout
디폴트 매개변수 디폴트 매개변수는 기본값이 정의되어 있는 매개변수로, 일반적인 함수 호출의 경우와 다르게, 호출된 함수에 맞는 매개변수의 실인수를 기술하지 않더라도 매개변수가 기본값으로 초기화되어 사용된다. 반대로 매개변수의 실인수를 기술한다면 기본값은 사용되지않고 기술한 실인수로 초기화 된다. #include "stdafx.h" #include using namespace std; void TestFunc(int nParam = 100) // TestFunc함수의 nParam의 디폴트 값은 100이다. { cout
참고도서 최호성 - 이것이 C++이다 (한빛미디어) 1. 입출력 1) std::cout std 네임스페이스에 속한 cout 객체는 iostream 클래스의 인스턴스로 printf() 함수와 같이 자료형을 명시해주지 않아도 그냥 출력하고싶은 데이터를 cout으로 보내면 알아서 자료형을 찾아서 출력해준다. 2) std::cin cout과 마찬가지로 자료형을 명시하지 않아도 되며, cout과 반대로 입력방법을 제공한다. #include "pch.h" #include #include int main() { int value; std::string str; std::cin >> value; std::cin >> str; std::cout