[C++] 연산자 오버로딩과 프렌드
·
C++/Basic
Test.h #pragma once class Test { public: Test(); Test(int h, int m); ~Test(); void Add(int h, int m); void Print(); void Reset() { minutes = 0; hours = 0; } Test operator+(const Test& t) const; private: int minutes; int hours; }; Test.cpp #include #include "Test.h" Test::Test() { minutes = 0, hours = 0; } Test::Test(int h, int m) : minutes(m), hours(h) { } Test::~Test() { } void Test::Add(int h,..
[C++] 열거체
·
C++/Basic
범위가 정해진 열거 class Stock { public: Stock(int x); ~Stock(); private: enum aa { egg, fire, gun }; enum bb { egg, fire, gun }; }; 다음과 같을 때 이미 aa에서의 내용들이 선언되어 있기 때문에 bb에서는 선언하지 못한다. enum class class Stock { public: Stock(int x); ~Stock(); private: enum class aa { egg, fire, gun }; enum class bb { egg, fire, gun }; }; - enum class를 사용하면 열거자에게 클래스 범위를 갖게하여 선언이 겹치지 않게 할 수 있다. - class 대신 struct를 사용할 수도 있다..
[C++] 클래스의 초기화, const 멤버 함수
·
C++/Basic
클래스의 초기화 Stock stock2 = Stock("Objectss", 2, 2.0); stock1 = Stock("no no", 10, 230.0); Stock no_tip = {"yes test", 100, 124.0}; 위의 매개변수를 가진 생성자가 있는 클래스에서 초기화를 위와 같이 사용할 수 있다. const 객체 const Stock land = Stock("sss"); 위 객체는 매개변수를 초기화한 후 다른 데이터로 변경할 수 없다. const 멤버함수 class Stock { public: void show() const; private: int ss; int xx; }; 멤버 변수들을 바꾸지 않기위해 멤버함수에 const를 사용한다. 클래스 사용 범위 상수 class Stock { p..
객체 지향 프로그래밍
·
C++/Basic
객체지향 프로그래밍 객체지향 프로그래밍(Object-Oriented Programming)은 좀 더 나은 프로그램을 만들기 위한 프로그래밍 패러다임으로 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것이다. 이 객체들을 마치 레고 블럭처럼 조립해서 하나의 프로그램을 만드는 것이 객체지향 프로그래밍이라고 할 수 있다. 다시 말해서 객체지향 프로그래밍은 객체를 만드는 것이다. 기본 구성 요소 클래스(Class) 같은 종류의 집단에 속하는 속성과 행위를 정의한 것. 다른 클래스와 독립적으로 디자인해야 한다. 몬스터(Monster) 의 특성과 행위들을 정의한 객체가 클래스가 될 것이다. 객체(Object) 클래스의 인스턴스(Instance). 상위 클래스의 속성을 가지고 있으면서 개별적..
[C++] using과 namespace
·
C++/Basic
기본적인 활용 namespace test { int x; double sss; } using namespace test; int main() { test::sss = 20; cout
[C++] new연산자
·
C++/Basic
float * ss = new float[20]; float가 4바이트므로 80바이트의 메모리가 new에 의해서 대입되고 delete로 해제될 때가지 메모리에 유지된다. int *pi = new int(6); *pi를 6으로 초기화 //struct struct where { double x; double y; double z; }; where *idds = new where {2.2, 34.5, 2.3}; //int int *ar = new [4] {2, 3, 4, 23}; int *oi = new(40 * sizeof(int)); 이런식의 초기화도 가능하다. int *xi = new int; delete xi; xi = new int [32]; delete [] xi; 꼭 사용 후에 delete를 이용..