2. C언어 기반의 C++ 2(윤성우 열혈강의 C++ 예제코드)


출처: 윤성우 열혈강의 C++ 예제코드


2.1. 새로운 자료형 BOOL

  • bool자료형의 크기
#include <iostream>

int main(void)
{
	int num=20;
	std::cout<<"Hello World!"<<std::endl;
	std::cout<<"Hello "<<"World!"<<std::endl;
	std::cout<<num<<' '<<'A';
	std::cout<<' '<<3.14<<std::endl;
	return 0;
}
2.2. 참조자(REFERENCE)의 이해

  • 참조자에 변수할당 후 참조자의 값을 변경
#include <iostream>
using namespace std;

int main(void)
{
	int num1=1020;
	int &num2=num1;

	num2=3047;
	cout<<"VAL: "<<num1<<endl;
	cout<<"REF: "<<num2<<endl;

	cout<<"VAL: "<<&num1<<endl;
	cout<<"REF: "<<&num2<<endl;
	return 0;
}
VAL: 3047
REF: 3047
VAL: 00A3F9EC
REF: 00A3F9EC
  • 참조자에 배열 요소를 할당
#include <iostream>
using namespace std;

int main(void)
{
	int arr[3]={1, 3, 5};
	int &ref1=arr[0];
	int &ref2=arr[1];
	int &ref3=arr[2];

	cout<<ref1<<endl;
	cout<<ref2<<endl;
	cout<<ref3<<endl;
	return 0;
}
  • 포인터 변수에 참조자 선언
#include <iostream>
using namespace std;

int main(void)
{
	int num=12;
	int *ptr=&num;
	int **dptr=&ptr;

	int &ref=num;
	int *(&pref)=ptr;
	int **(&dpref)=dptr;

	cout<<ref<<endl;
	cout<<*pref<<endl;
	cout<<**dpref<<endl;
	return 0;
}
12
12
12
2.3. 참조자(REFERENCE)와 함수

  • reference를 이용한 변수 swap
#include <iostream>
using namespace std;

void SwapByRef2(int &ref1, int& ref2)
{
	int temp=ref1;
	ref1=ref2;
	ref2=temp;
}

int main(void)
{
	int val1=10;
	int val2=20;
	
	SwapByRef2(val1, val2);
	cout<<"val1: "<<val1<<endl;
	cout<<"val2: "<<val2<<endl;
	return 0;
}
2.4. MALOC & FREE를 대신하는 NEW & DELETE

  • malloc & free 이용한 메모리 할당과 해제
#include <iostream>
#include <string.h>
#include <stdlib.h>
using namespace std;

char * MakeStrAdr(int len)
{
	char * str=(char*)malloc(sizeof(char)*len);
	return str;
}

int main(void)
{
	char * str=MakeStrAdr(20);
	strcpy(str, "I am so happy~");
	cout<<str<<endl;
	free(str);
	return 0;
}
  • new & delete를 이용한 메모리 할당과 해제
#include <iostream>
#include <string.h>
using namespace std;

char * MakeStrAdr(int len)
{
	// char * str=(char*)malloc(sizeof(char)*len);
	char * str=new char[len];
	return str;
}

int main(void)
{
	char * str=MakeStrAdr(20);
	strcpy(str, "I am so happy~");
	cout<<str<<endl;
	// free(str);
	delete []str;
	return 0;
}

2.5. C++에서 C언어의 표준함수 호출하기

  • header include define 시 c를 더하고 .h를 제거함
#include <cmath>
#include <cstdio>
#include <cstring>
using namespace std;

int main(void)
{
	char str1[]="Result";
	char str2[30];

	strcpy(str2, str1);
	printf("%s: %f \n", str1, sin(0.14));
	printf("%s: %f \n", str2, abs(-1.25));
	return 0;
}

Table of contents


Open source project on GitHub


Jupyter/IPython Notebook


Open API


NoSQL


Jekyll


Gradle


Kotlin


C++

  • C++ keywords
  • 윤성우 열혈강의 C++ 프로그래밍 예제코드 [펼치기]
    1. C언어 기반의 C++ 1
      • printf와 scanf를 대신하는 입출력 방식
      • 함수 오버로딩(Function Overloading)
      • 매개변수의 디폴트 값(Default Value)
      • 인라인 함수(Inline)함수
      • 이름공간(namespace)에 대한 소개
    2. C언어 기반의 C++ 2
      • 새로운 자료형 bool
      • 참조자(Reference)의 이해
      • 참조자(Reference)와 함수
      • maloc & free를 대신하는 new & delete
      • C++에서 C언어의 표준함수 호출하기
    3. 클래스의 기본
      • C++에서의 구조체
      • 클래스(Class)와 객체(Object)
      • 객체지향 프로그래밍의 이해
    4. 클래스의 완성
      • 정보은닉(Information Hiding)
      • 캡슐화(Encapsulation)
      • 생성자(Constructor)와 소멸자(Destructor)
      • 클래스와 배열 그리고 this 포인터
    5. 복사 생성자
      • ‘복사 생성자’ 와의 첫 만남
      • ‘깊은 복사’와 ‘얕은 복사’
      • 복사 생성자의 호출시점
    6. friend와 static 그리고 const
      • const와 관련해서 아직 못다한 이야기
      • 클래스와 함수에 대한 friend 선언
      • C++에서의 static
    7. 상속(Inheritance)의 이해
      • 상속에 들어가기에 앞서
      • 상속의 문법적인 이해
      • protected 선언과 세 가지 형태의 상속
      • 상속을 위한 조건
    8. 상속과 다형성
      • 객체 포인터의 참조관계
      • 가상함수(Vitual Function)
      • 가상 소멸자와 참조자의 참조 가능성
    9. 가상(Virtual)의 원리와 다중상속
      • 멤버함수와 가상함수의 동작원리
      • 다중상속(Multiple Inheritance)에 대한 이해
    10. 연산자 오버로딩 1
      • 연산자 오버로딩의 이해와 유형
      • 단항 연산자의 오버로딩의
      • 교환법칙 문제의 해결
      • cout, cin 그리고 endl의 정체
    11. 연산자 오버로딩 2
      • 반드시 해야 하는 대입 연산자의 오버로딩
      • 배열의 인덱스 연산자 오버로딩
      • 그 이외의 연산자 오버로딩
    12. String 클래스의 디자인
      • C++ 표준과 표즌 string 클래스
      • 문자열 처리 클래스의 정의
    13. 템플릿(Template) 1
      • 템플릿(Template)에 대한 이해와 함수 템플릿
      • 클래스 템플릿(Class Temlpate)
    14. 템플릿(Template) 2
      • Chapter 13에서 공부한 내용의 확장
      • 클래스 템플릿의 특수화(Class Temlpate Specialization)
      • 템플릿의 인자
      • 템플릿과 static
    15. 예외처리(Exception Handling)
      • 예외상황과 예외처리의 이해
      • C++의 예외처리 메커니즘
      • Stack Unwinding(스택 풀기)
      • 예외상황을 표현하는 예외 클래스의 설계
      • 예외처리와 관련된 또 다른 특성들
    16. C++의 형 변환 연산자
      • C++에서의 형 변환 연산

ETC