티스토리

천천히, 꾸준히
검색하기

블로그 홈

천천히, 꾸준히

linked-list.tistory.com/m

공부 기록

구독자
0
방명록 방문하기

주요 글 목록

  • 가변 길이 템플릿 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 #include template void print(T arg) { std::cout 공감수 0 댓글수 0 2020. 8. 28.
  • 클래스 (Class)와 구조체 (Struct)의 차이 구조체와 클래스 1 2 3 4 5 6 7 8 9 10 11 12 13 struct Point { int x, y; }; int main() { Point p = { 1,2 }; return 0; } cs 구조체는 구조체를 만들어준 =뒤, main()에서 p를 선언하고 구조체를 초기화해주면 된다. 여기서 struct 대신 class를 써주면 클래스가 된다. 그런데 클래스로 바꿔주면 컴파일 과정에서 오류가 발생한다. 클래스와 구조체 모두 데이터를 묶어주는 역할을 하는데 오류가 발생하는 이유는 무엇일까 그 이유는 구조체와 클래스의 기본 접근제어 지시자가 다르기 때문이다. 구조체의 경우 접근제어 지시가를 따로 선언하지 않으면 모든 변수와 함수가 public으로 선언되고 클래스의 경우 private로 선언된다. .. 공감수 0 댓글수 0 2020. 8. 28.
  • 함수 템플릿 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include #include template T max(T& a, T& b) { return a > b ? a : b; } int main() { int a = 1, b = 2; std::cout 공감수 0 댓글수 0 2020. 8. 27.
  • 템플릿 (Template) 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556#include #include // T를 템플릿 인자로 받는 템플릿 정의template class Vector { T* data; int capacity; int length; public: Vector(int n = 1): data(new T[n]), capacity(n), length(0){} void push_back(T s) { if (capacity 공감수 0 댓글수 0 2020. 8. 27.
  • 오버라이딩, 가상함수 오버라이드 class Base { std::string s; public : Base() : s("기반") { std::cout 공감수 0 댓글수 0 2020. 8. 20.
  • String class #include #include #include using namespace std; class MyString { char* string_content; // 문자열 데이터를 가리키는 포인터 int string_length; // 문자열 길이 int memory_capacity; // 현재 할당된 용량 public: MyString(char c); // 문자 하나로 생성 MyString(const char* str); // 문자열로 부터 생성 MyString(const MyString& str); // 복사 생성자 ~MyString(); // 소멸자 // 함수가 클래스의 멤버함수인 경우 const 키워드를 뒤에 삽입가능 // 이 경우 함수에 속해있는 객체의 멤버변수를 변경할 수 없다 int length.. 공감수 0 댓글수 0 2020. 8. 18.
  • explicit, mutable 암시적 형 변환 (implict type conversion) - 컴파일러가 자동으로 하나의 기본 자료형을 다른 자료형으로 변환해준다. - 한 기본 자료형이 예상되지만 다른 기본 자료형이 제공될 때마다 수행한다. - 변환을 수행하는 방법을 컴파일러에게 명시적으로 알려 주지 않는다. - 한 자료형의 값을 더 큰 자료형으로 승격할때 사용해도 좋다. - 사용자가 의도하지 않은 암시적 변환이 일어날 수 있다. - 자동 형 변환이라고 불린다. 명시적 형 변환(explicit type conversion) - 형 변환을 하기 위해 형 변환 연산자를 사용한다. - 컴파일러에서 생성자를 explicit로 선언한다면 다른 생성자를 이용한 암시적 변환을 수행하지 않도록 막을 수 있다. - 해당 생성자가 복사 생성자의 형태.. 공감수 0 댓글수 0 2020. 8. 18.
  • 초기화 리스트 (Initializer list) 생성자 호출과 동시에 멤버 변수들을 초기화 해주는 것 (생성자 이름) : var1(arg1), var2(arg2) {} -> var = 클래스의 멤버 변수, arg = 멤버 변수들을 무엇으로 초기화할지 지칭 var, arg의 이름이 같아도 상관X ex) Marine::Marine(int coord_x, int coord_y) : coord_x(coord_x), coord_y(coord_y), hp(50), damage(5), is_dead(false) {} 초기화 리스트를 사용하면 생성과 초기화를 동시에 수행하는 반면 초기화 리스트를 사용하지 않는 경우 생성을 먼저 한 뒤 대입을 수행하게 된다. int a = 10; // 초기화 리스트를 사용한다면 int a; a = 10; // 초기화 리스트를 사용하지.. 공감수 0 댓글수 0 2020. 8. 17.
  • 참조자 (레퍼런스 - reference) 다른 변수나 상수를 가리키는 방법 (별명을 붙여주는 것) 참조자를 사용하면 불필요한 &와 *를 사용하지 않아도 되기때문에 코드를 훨씬 간결하게 나타낼 수 있다. 자료형& 참조자명 = 변수명; ex) int& another_a = a; double& another_b = b; int*& another_c = &c; int main() { int a = 3; int& another_a = a; another_a = 5; std::cout 공감수 0 댓글수 0 2020. 8. 17.
  • 이름 공간 - namespace 이름공간이란 어떤 정의된 객체에 대해 어디 소속인지 지정해주는 것이다 같은 이름이라도 소속된 이름공간이 다르면 다른것으로 취급한다 std::cout - std라는 이름 공간에 정의되어 있는 cout을 의미한다 - std라는 이름공간 없이 cout만을 사용하면 컴파일러는 cout을 찾지 못한다 이름공간 정의 방법 ex) namespace header1 { int foo(); void bar(); } namespace header2 { int foo(); void bar(); } - 두 헤더파일 header1.h와 header2.h가 존재하는 경우 header1에 있는 foo()는 header1의 이름공간에 존재하는 것이고 header2에 있는 foo()는 header2의 이름공간에 존재한다 - 자기자신이 .. 공감수 0 댓글수 0 2020. 8. 15.
  • const가 붙은 멤버함수 클래스의 멤버함수에는 함수 선언시 const 키워드를 뒤에 붙일 수 있다. ex) void show() const; 이 경우 함수에 속해있는 객체의 멤버 변수를 변경할 수 없다. 즉, 이 함수는 멤버 변수의 값을 수정하지 않는다는 뜻이다. ex) #include using namespace std; class Num { int count; public: Num() { count = 0; } void show() const { count = 1; // 에러 발생! cout 공감수 0 댓글수 0 2020. 8. 15.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.