분류 전체보기 (162) 썸네일형 리스트형 [C++] this 포인터, 메서드 체이닝(Method Chaining), *this의 의미 this class 내부에서 this는 자기 자신의 주소를 나타내는 포인터를 말한다. 따라서 아래 코드처럼 this와 객체의 주소를 출력해 보면 같은 값이 나오는 것을 확인할 수 있다. #include using namespace std;class testclass {public: testclass() { cout 메서드 체이닝 (Method Chaining) 메서드 체이닝이란 메서드를 꼬리 물듯 호출하는 디자인 패턴을 말한다. 아래 코드처럼 this 지시자를 활용하면 이러한 코드를 작성할 수 있다. #include #include using namespace std;class SelfRef{private: int num;public: SelfRef(int n) :num(n) { cout .. [C++] 객체 배열 객체 배열 객체를 배열로 선언하는 것도 가능하다. testclass라는 이름의 클래스를 선언했다고 했을 때 testclass의 객체 5개를 배열로 선언하는 방법은 아래 코드와 같다.testclass arr[5]; 물론 배열로 선언을 해도 생성자는 실행된다. 따라서 아래 코드를 실행시켜 보면 "Hello, world!"가 5번 출력되는 것을 확인할 수 있다. #include using namespace std;class testclass {public: testclass() { cout 그러나 생성자에 인자를 전달할 때 초기화를 아래 코드처럼 해야 하기 때문에선언한 객체 중 일부는 전달하고 일부는 전달하지 않는 것은 불가능하다. testclass arr[5] = {0, 1, 2, 3, 4}; 또.. [C++] 멤버 이니셜라이저 (Member Initializer), const 멤버변수 초기화 멤버 이니셜라이저 멤버 이니셜라이저를 사용하면 객체가 아닌 멤버의 초기화가 가능하다. class TestClass {private: int num1; int num2;public: TestClass(int n1, int n2) : num1(n1), num2(n2) { cout 위 코드에서 : num(n) 이 멤버 이니셜라이저인데 생성자의 인자로 n1, n2 를 전달받으면num1, num2 의 선언과 동시에 대입하겠다는 의미이다. 즉, 초기화를 하겠다는 의미이다. 멤버 이니셜라이저의 활용 멤버 이니셜라이저를 사용할 때 선언한 후 대입하는 것이 아니라초기화를 진행하게 되기 때문에 const 멤버변수의 초기화도 가능하다. class TestClass {private: const in.. [C++] 생성자와 소멸자, 생성자의 오버로딩, 디폴트 생성자, 객체의 동적할당 생성자 C++에서도 C#에서와 마찬가지로 생성자를 선언할 수 있다. C# 문법을 포스팅할 때 이미 한 번 설명했지만다시 설명하자만 생성자란 클래스와 이름이 같은 멤버함수로 객체 생성 시 최초 1회만 호출된다. 이 함수는 반환형이 선언되어 있지 않으며 실제로 아무것도 반환하지 않는다. 따라서 아래와 같이 생성자를 선언할 수 있다. class TestClass {private: int num = 10;public: TestClass(int n) { num = n; cout 생성자의 오버로딩 생성자의 오버로딩 또한 가능하다. class TestClass {private: int num = 10;public: Test.. [C++] 객체의 전달 (const&) 객체의 전달 - 객체를 그대로 파라미터로 사용하는 경우 전달방식에 있어서 원본을 사용하는 것이 아닌 복사된 값을 사용하므로 임시 복사본이 생성된다. - 참조연산자(&)를 사용하여 파라미터로 사용하는 경우 실제 data의 원본을 가지고 사용하므로 복사 생성자를 호출하는 비용이 없다. 하지만 data 원본이므로 함수 내에서 값이 변경되는 리스크가 존재하기 때문에 경우에 따라서 사용해야 한다. 이 경우에 한 개의 객체가 존재하며 2개의 이름을 갖게 된다. (함수 인자명, 원본 객체명) #include class TestClass { private: int a = 10; int b = 15; public: int plus () { a++; b++; return a + b; } }; void GetPlusValu.. [C++] 클래스, 접근제어지시자(public, private), const 함수 클래스와 구조체 구조체에서 struct를 class로 바꾸기만 하면 클래스의 선언은 끝난다. 구조체struct Pos { double posx; double posy; void ShowCurPos() { std::cout 클래스class Pos { double posx; double posy; void ShowCurPos() { std::cout 구조체와 역할도 동일하다. 여러 개의 변수를 하나의 의미로 묶는 것이다. 또한 클래스에 접근하는 방법도 동일하다. 클래스 변수를 하나 생성해 주고 도트연산자를 통해서 접근할 수 있다. 접근제어 지시자 클래스는 세 가지 접근 제어지시자를 통해서 선언된 함수 및 변수 등의 접근 범위를 제한할 수 있다. public, protec.. [C++] 구조체 typedef 선언 생략 C++에서의 구조체는 C표준에서의 구조체와 약간 차이가 있다. C표준에서는 구조체 변수를 선언할 때 struct 키워드를 생략하기 위해서 typedef 선언을 추가해야만 했다. 그러나 C++에서는 별도의 typedef 선언 없이도 아래 코드처럼 struct 키워드를 생략하는 것이 가능하다. struct Pos { double posx; double posy; }; int main () { Pos posA; return 0; } 구조체 안에 함수 삽입 또한 C++에서는 구조체 안에서 함수를 선언할 수도 있다. 함수에 접근할 때에는 구조체 변수에 접근하는 것과 마찬가지로 도트연산자를 통해서 접근할 수 있다. 따라서 아래 코드처럼 사용하는 것이 가능하다. #include struct .. [C언어] 열거형 (enum) 열거형 (enum) 열거형은 const int 자료형을 같은 의미끼리 묶어서 정의할 때 사용된다. 열거형을 정의할 때에는 이름도 같이 정의해주면 열거형 변수를 선언하여 사용하는 것도 가능하다. 그러나 필수는 아니다. 정수이기 때문에 홀로 변수처럼 사용도 가능하며 변수에 대입도 가능하다. 따라서 아래 코드처럼 사용이 가능하다. #include enum DayOfWeek { Monday = 0, Tuesday = 1, Wednesday = 2, Thursday = 3, Friday = 4, Saturday = 5, Sunday = 6};int main(){ enum DayOfWeek week = Monday; int intweek = Tuesday; printf("%d %d %d", Wednesday, we.. 이전 1 ··· 6 7 8 9 10 11 12 ··· 21 다음