객체도 상수화할 수 있다.

const instance ist(20);

이렇게 객체에 const 선언을 붙이게 되면, 이 객체를 대상으로는 const method 만 호출이 가능하다. 이는 객체의 const 선언이 다음의 의미를 갖기 때문이다.

"이 객체의 데이터 변경을 허용하지 않겠다."

때문에 const method 만 호출이 가능한 것이다. 


※ 멤버 변수에 저장된 값을 수정하지 않는 함수는 가급적 const로 선언해서, const 객체에서도 호출이 가능하도록 할 필요가 있다. 


const 와 함수 오버로딩

함수 오버로딩이 성립하려면 매개변수의 수나 자료형이 달라야 한다. 하지만 다음과 같이 const의 선언유무도 함수 오버로딩의 조건에 해당이 된다.

void simple() {    }

void simple() {    } const




'Programming > C++' 카테고리의 다른 글

getopt Function Example  (0) 2013.09.25
qsort Function Example  (0) 2013.09.25
복사 생성자의 완벽한 이해  (0) 2013.08.12
3n+1 문제  (0) 2013.03.27
List 자료구조로 만든 프로그램  (0) 2013.03.20
Posted by scii
:


복사 생성자에서 임시 객체의 이해




임시객체는 메모리에 저장되고, 그 객체의 참조 값이 반환된다.

임시 객체의 특성:

- 임시 객체는 다음 행으로 넘어가면 바로 소멸되어 버린다.

- 참조자에 참조되는 임시 객체는 바로 소멸되지 않는다.


언뜻 보면, tempRef 라는 새로운 객체를 생성해서, 반환되는 객체를 가지고 대입 연산을 진행하는 것처럼 보인다. 

그러나 위의 예제에서 0x7fff88301b40 주소 값이 임시 객체이다. 이 임시 객체는 tempRef라는 이름을 붙여주고 있기 때문에, 다음 행에 넘어가도 사라지지 않는다.


이것을 상당히 중요하다고 생각한다. 객체의 생성 수를 하나 줄여서 메모리 효율성을 높이기 때문이다.


'Programming > C++' 카테고리의 다른 글

qsort Function Example  (0) 2013.09.25
const 객체와 const 객체의 특성성  (0) 2013.08.13
3n+1 문제  (0) 2013.03.27
List 자료구조로 만든 프로그램  (0) 2013.03.20
namespace (이름 공간)  (0) 2013.03.17
Posted by scii
:


RPM 패키지

- 레드햇 리눅스 계열의 배포판 자료들은 대부분 RPM 이라는  패키지로 묶어져 배포되고 있다.

tar 압축 파일에 비해 RPM 패키지는 소스 자체를 컴파일된 바이너리 파일로 묶어놓고, 이를 해당 디렉토리로 설치할 수 있는 기능을 가지고 있다.


RPM 패키지 구조

Kernel -2.6.9-7hs.i386.rpm

kernel -> package

-2.6.9 -> version

-7hs -> release

i386 -> architecture

rpm -> PPM name


RPM 명령

 RPM 명령 사용법

설치 방법 

rpm -i 패키지명 

업그레이드 방법 

rpm -U 패키지명 

제거 방법 

rpm -e 패키지명

질의 방법 

rpm -q 패키지 목록 

점검 방법 

rpm -V 또는 -y 패키지 목록 

패키지 만드는 방법 

rpm -b 패키지명 

패키지 강제 설치 

rpm --force 

의존성 무시한 채 설치 

rpm --nodeps 


패키지 설치 및 삭제

기본적으로 -i 옵션으로 rpm 패키지를 설치할 수 있다. 

-v 옵션

-i 옵션과 함께 -v 옵션을 사용하면 패키지가 인스톨되고 있다는 메시지를 알려준다.

-h 옵션

v 옵션보다 좀 더 나은 설치 과정을 바란다면 -h 옵션을 추가해 주면 된다. 진행 과정을 눈으로 확인할 수 있도록 샵 문자로 그 과정을 보여준다.


※ RPM 패키지를 설치할 때 대부분 -ivh 옵션을 한번에 지정하여 사용하는 것을 권장한다.


Posted by scii
:


참고 사이트: http://odforce.net/wiki/doku.php?id=viewers


간단한 예)

- 뷰창에서 임의의 포인트를 클릭하고 엔터를 누르면, 그 포인트의 정보가 반환된다.

import toolutils


def parent(obj_node, new_parent):

    xform = obj_node.worldTransform()

    obj_node.setFirstInput(new_parent)

    obj_node.setWorldTransform(xform)


def aa():

    viewer = toolutils.sceneViewer()

    node_to_reparent = viewer.selectObjects(quick_select=True)[-1]

    new_parent = viewer.selectObjects(use_existing_selection=False, quick_select=True,

    prompt="select new parent node")[-1]

    parent(node_to_reparent, new_parent)


def tmp():

    viewer = toolutils.sceneViewer()

    selection = viewer.selectGeometry("select some point and enter",

        geometry_types=(hou.geometryType.Points,), use_existing_selection=False)

    

    print selection, type(selection)                                                                                     # class instance

    print selection.mergedSelectionString(), type(selection.mergedSelectionString()) # ptnum

    print selection.nodes()                                                                     # select point has Node instance 


'Houdini > Python' 카테고리의 다른 글

[REGEX] Greedy vs Non-Greedy  (0) 2016.10.09
[PySide] Python panel Test UI  (0) 2016.01.25
rot, trans, scale  (0) 2013.05.25
hou Module Functions  (0) 2013.04.01
Python으로 만든 뷰창 옵션 지우기  (0) 2013.02.23
Posted by scii
:


지수(exp) 함수와 로그(log) 함수의 그래프를 Houdini 에서 표현해보았다.


exp_log__function_exam.hipnc



'Houdini > SOP' 카테고리의 다른 글

Cross Product (벡터의 외적)  (0) 2013.09.01
분수에 같은 파티클에 이미지 입히기  (0) 2013.01.25
노말 방향으로 폭파  (0) 2013.01.25
12.07.12 THU  (0) 2012.07.23
12.07.09 MON  (0) 2012.07.22
Posted by scii
:


수학 공식을 분해하여 Houdini에서 적용시키니 정말 이해가 잘 가고 좋다~!! 


 => length 


 => normalize


 => dot

 => dot


 => arccosine






'Houdini > Houdini etc' 카테고리의 다른 글

Very Good Site  (0) 2015.08.24
Houdini Special characters  (0) 2014.04.21
뷰창에서 보이는 View Option 들 제거하는 Hscript  (0) 2013.02.21
RenderMan Shader Compiles  (0) 2013.01.08
Houdini User가 갖춰야 할...  (0) 2012.12.02
Posted by scii
:


나는 vim이 손에 익어서 이것으로 설정을 하였다.


설정 방법:

.bashrc or .bash_profile 에 VISUAL="/usr/bin/gvim --nofork" 를 설정해주면 된다.

그러면 Alt+E 를 눌러서 텍스트 창을 띄운 다음에, 또 다시 Alt+E 혹은 External Editor 를 클릭하면 본인이 설정한 Text Editor가 나온다.


--nofork 옵션을 준 이유:

이것을 하지 않으면, 본래 적혀있던 것이 외부 텍스트 에디터에 나타나지 않는다. (윈도우는 이것을 하지 않아도 된다)

예를 들어, 노드에 어느 칸에 hahha 가 적혀있었고, 이것을 외부 에디터로 열었을 경우, hahha는 외부 에디터에 나타나지 않는 현상이 발생한다. .

그래서 자식 프로세스를 생성하지 않는 nofork 옵션을 주어야 한다. 

Posted by scii
:

이진 트리

Programming/Python 2013. 5. 31. 00:18 |


이진 트리의 전위, 중위, 후위 순회 


파이썬으로 코딩하니 정말 간단해진다.






'Programming > Python' 카테고리의 다른 글

[REGEX] 그룹 재활용  (0) 2016.10.08
Python Function : any(), all()  (0) 2014.09.15
bisect Module  (0) 2013.05.17
multiprocessing Module  (0) 2013.05.17
Regular Expression  (0) 2013.05.13
Posted by scii
: