본문 바로가기
Engineering/C/C++

[펌]20가지 C++ 팁

by 알 수 없는 사용자 2008. 7. 15.

[원문] http://decoder.tistory.com/547
http://www.devx.com/cplus/Article/16328

The Top 20 C++ Tips of All


<iostream.h> 대신 <iostream>을 써라.

기존 legacy코드를 다루거나 하지 않는다면 비표준 <iostream.h> 보다는 <iostream>을 쓰는 것이 좋다. 두 구현은 차이가 있으므로 한 코드에 둘 모드를 쓸 수 없다.

RValue에 레퍼런스 바인딩하기

레퍼런스를 const 타입으로 한다면 rvalue에 레퍼런스를 결합하는 것을 허용한다.
f(2) 호출시 값으로 2를 가지는 int 타입의 임시 객체가 만들어지고, 이것이 i 레퍼런스에 결합됨. 그런데 f() 함수에서 i를 변경하면??? 그래서 const object만 허용.

Comma-Separated Expressions

이 때 while 문 실행횟수는? 10번. Comma-Separated Expression에서는 가장 오른쪽에 있는 표현식의 결과가 최종 값이다.

프로그램이 시작되기 전에 함수 호출하기

전역 인스턴스의 생성자에서 함수를 호출하면 된다.

메모리 관리


초기화는?

메모리 단편화(Fragmentation) 제거하기

1. 동적 메모리를 되도록 적게 쓴다.
2. small chunk보다는 large chunks를 allocate/deallocate하자.

delete와 delete[] 구분하기

int *p = new int[10];
delete p; // 이게 아니라 delete[] p; 해야 한다.

클래스 멤버 alignment 최적화하기

임시 객체 제거하기


알게 모르게 임시 객체가 만들어지고 사라진다. -_-+
Complex x, y, z;
x = y + z; /* 이렇게 하면 임시객체가 만들어진다. */ 임시 객체 없애는 방법 하나.
Complex y, z;
Complex x = y + z;
임시 객체 없애는 방법 두울.
x = y;
x += z;

가상 소멸자가 없는 클래스 상속은 위험해


나머지는 패스! ;;