728x90 반응형 C++복습20 C++복습) Modern C++/ Using Using문법 Uisng문법은 C++11에서 처음 등장하였으며, 기존의 typedef을 대체할수 있는 문법이다.말그대로 typedef과 같이 타입에 대한 별칭을 정할수 있는 문법이다. typedef과의 차이점 1.가독성typedef __int64 id;using id2 =int;typedef void(*MyFun)();using Myfun2=void(*)();typedef와는 달리 using문법은 꽤나 직관적인 문법이며, 가독성이 조금더 높다. 2.템플릿templatetypedef std::list List //errortemplateusing List=std::list; typedef같은 경우 템플릿과의 호환이 되지 않지만 using의 경우 템플릿과 호환이 가능하다. C++복습 2021. 12. 22. C++복습) Modern C++/ Nullptr Nullptr Nullptr은 c++11에서 새로 등장한 문법이다. C++11이전에서 Null포인터는 0또는 NULL이라는 것으로 Null포인터를 표현했었다.int* ptr=NULL;int* ptr=0;//NULL은 #define NULL 0이므로 그냥 0의값이다. Nullptr의 필요성과 0 & Null의 문제점 1.오작동 가능성void Test(int a){ cout이러한 식으로 포인터를 호출하고 싶지만, NULL자체가 0이기때문에 매게변수가 int로 인식되는 문제가 발생한다.즉, 오동작을 피하기 위해서라도 nullptr을 반드시 사용해야된다. 2.가독성class Mage{}Mage* Find(){return nullptr;}int main(){auto kkk1=Find();auto kkk2=Find.. C++복습 2021. 12. 22. C++복습) Modern C++/ Auto Auto auto 문법을 사용하면 초깃값의 형식에 맟춰 선언하는 변수의 형식이 자동으로 결정된다. 이것을 타입추론, 혹은 형식연역(Type Deduction)이라고 한다.class AUTO{}int a=3;float b=3.14f;double c=1.23;AUTO d=AUTO();auto a=3;auto b=3.14f;auto c=1.23;auto d=AUTO();//각각의 변수는 같은 타입을 가진다. Auto에서 주의점 기본 auto는 const와 참조타입을 무시한다. 따라서 참조타입이나 const가 필요할 경우const auto/auto&등을 반드시 붙여주어여한다.int a=3;int b=3.14f;int& ref=a;const float con=b;auto test1=ref;auto test2=c.. C++복습 2021. 12. 22. C++복습) 생성자 맴버 초기화 리스트 맴버 변수의 초기화는 다양한 문법이 존재한다.그런데 번거롭게 맴버 변수의 초기화는 왜 이루어 져야되는것인가?class Mage{public: Mage(){}public: int _hp;};int main(){ Mage m; cout즉, 초기화를 하는 이유는 다른 프로그램에 의해 사용되어진 메모리안에 사용했던 값이나 예기치 못한 쓰레기 값을 들고 있어서 포인터 및 주소값과 연루되어 있을 경우 심각한 에러나 버그를 동만할수 있기에 초기화를 해야만 한다. 초기화 방법으로는 생성자내에서 하는 방법과 초기화리스트, 그리고 C++11문법등이 있다. 생성자내에서의 처리 이전에 작성했던 생성자/소멸자에서 부모생성자의 초기화와 동일한 문법을 가진다.class Player{ Player(){} Player(int i.. C++복습 2021. 11. 22. C++복습) 다형성 다형성이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미한다. 즉, 겉으로는 같아 보이지만 기능은 다르게 동작하는 것이라 생각하면 된다.C++에서 대표적인 다형성은 오버로딩과 오버라이딩, 그리고 템플릿등이 있다. 오버로딩 오버로딩은 함수의 중복 정의로써 단순히 함수 이름을 재사용하는것에 그친다.class Player{ void Move(){} void Move(int speed){}//함수이름 재사용}; 오버라이딩 오버라이딩은 함수의 재정의로써 부모 클래스의 함수를 자식 클래스에서 다시 정의하는 것을 의미한다.class Player{ void Move(){cout 상속관계에서의 다형성 상속관계에서는 부모클래스가 자식클래스의 대표할수 있게된다.단, 반대의 경우는 성립하지 않는다.class.. C++복습 2021. 11. 21. C++복습) 클래스 캡슐화(은닉성) 캡슐화 객체의 캡슐화는 클래스 안의 속성 및 함수를 외부에 감추는 방법으로는 언어적 측면에서 접근지정자(public/private/protected)를 두어 은닉의 정도를 기술하여 구현하는 것을 의미한다.접근지정자에 의해 제한된 멤버들은 컴파일러에 의해 판단된다. 언어적 측면에서 접근지정자에 의해 정의된 해당 멤버변수나 멤버함수는 코드 중에 접근방식을 위반한 코드를 작성하면 컴파일 오류로 처리하고 실행코드 생성을 제한한다.또한 다른 경로로 접근하기를 유도할때도 사용하는 방법이다. public:모든 접근을 허용함private:자기 클래스 내부에서만 접근을 허용함protected:자기 클래스 내부와 상속받은 자식 클래스에서만 접근을 허용함. 다른 경로로 접근하기를 유도 클래스 내부의 메소드들을 직접적.. C++복습 2021. 11. 20. C++복습) 클래스 상속성 클래스 상속성 자식 클래스가 부모 클래스의 특성과 기능을 물려받는 것을 의미한다.예를 들면 자동차라는 클래스는 운전이 가능한 함수와 바퀴 및 핸들이라는 맴버변수가 있다고 가정한다면,이를 상속받은 현대차라는 클래스도 동일한 함수와 맴버변수를 사용할수 있는것이다.상속을 받을때는 클래스 선언시 자식클래스: public 부모클래스로 상속 시킬수 있다.당연하게도 자식클래스가 독자적으로 가지는 함수 및 맴버변수는 부모클래스에서 사용할수 없다.현대차라는 클래스의 현대마크라는 맴버변수는 자동차에 사용 할 수 없다.class Car{public: void move(){}public: int _speed; int _price;};class Hyun :public Car{ //move와 _speed를 상속받아 사용가능}; .. C++복습 2021. 11. 20. C++ 복습) 클래스생성자와 소멸자 클래스에는 맴버함수를 추가 및 제어 할수 있다.그중에서도 생성자와 소멸자는 상당히 특별한 맴버함수인데, 시작과 끝을 알리는 맴버함수이다. 생성자와 소멸자 생성자는 클래스가 탄생하면 자동적으로 호출되는 맴버함수이고, 다양한 생성자가 존재한다. 반면 소멸자는 클래스가 소멸할때 호출되며 단하나만 존재한다. 생성자 1.기본생성자기본생성자는 인자가 없는 생성자를 의미한다. class Constructor{public:Constructor(){ //기본생성자}};2.복사 생성자복사 생성자는 자기자신의 참조타입을 인자로 받는 생성자이다.복사생성자는 이미 만들어져 있는 클래스의 데이터를 복사할때 사용되는 생성자이다. class Constructor{public:Constructor(const Construct.. C++복습 2021. 11. 19. 이전 1 2 다음 728x90 반응형