목록Language/C++, C# (18)
ecsimsw
1. 포인터는 변수이고 배열 명은 상수이다. 포인터는 다른 주소를 가리킬 수 있지만 배열 명은 오직 배열의 시작 주소만을 가리킨다. 2. 포인터로 메모리를 할당하여 동적인 크기의 배열을 선언할 수 있고, 조절할 수 있다. 반면 배열은 정적인 크기로 선언되어 크기가 변할 수 없다. 3. 포인터 변수의 크기는 4바이트 (32비트 컴퓨터), 8바이트 (64비트 컴퓨터) 이지만 배열 명을 sizeof 할 시 배열의 전체 크기를 구할 수 있다. 4. delete, delete[]를 선호해야하는 이유는 크기를 지정하는 것이 더 안전하기 때문과, delete[]을 이용해야 소멸시키는 객체만큼의 소멸자를 호출하기 때문이다. 추가적으로 포인터에 할당한 메모리를 delete 하는 것과 포인터 변수의 값은 관련이 없다. d..
constructor ary = new int*[count_rows]; for (int i = 0; i
암시적으로 생성자가 호출되면서 발생할 수 있는 의도치 않은 형 변환을 막기 위해 생성자의 명시적 호출을 강제하기 위한 키워드
http://blog.naver.com/PostView.nhn?blogId=wkdghcjf1234&logNo=220210906503 형 변환 연산자: static_cast와 reinterpret_cast의 차이 이번에는 간단하게 static_cast와 reinterpret_cast의 차이점에 대하여 알아봅니다. 실제로 이 두가지는 비... blog.naver.com 다시 정리
typedef OpKernel* (*Factory)(OpKernelConstruction*); - tensorflow source를 분석하다가 위의 typedef로 Factory가 정의되있는 것을 보고 공부하게 되었다. function pointer - 함수를 호출한다는 것은 함수가 정의된 메모리의 시작 주소로 pc를 이동시키는 것을 의미한다. 다른 상수 타입의 포인터와 마찬가지로 함수 포인터 단순히 이런 주소를 담는 변수이다. returnType (*fpName) (parmeters) - 위처럼 가리킬 함수의 리턴 타입, 파라미터와 함께 함수 포인터를 선언하고 같은 형태를 갖는 함수를 대입하여 주소를 저장하고, 이를 호출한다. void foo() { cout
object factory - Design pattern to instance variety type's object. - 사용 이유 자료형에 대한 정보는 있지만, C++ 에서 표현 가능한 형태가 아닌 경우 - 파일을 읽고, 객체를 생성하는 경우 - 인터넷 패킷을 받고, 객체를 생성하는 경우 객체 생성시 의무적으로 해야할 일이 있을 경우 simple example human* human_factory(char sex) { human* h = 0; switch (sex) { case 'M': h = new Man(); break; case 2: h = new Woman(); break; } return h; }
std::initializer_list cppreference_ std::initializer_list Stackoverflow _The constructor initializer list and const variable initializer list className (parameter) : varName1(arg), varName2(arg) {}; - 위의 형식으로 생성자를 정의하는 것으로 생성과 동시에 멤버 변수를 초기화 하고, 이를 생성자 리스트라고 한다. #include using namespace std; class myclass { int integer; char character; public: myclass(): integer(10), character('A'){};// construc..