본문 바로가기

프로그래밍/Effective C++

객체 초기화(effective c++ 04) 서론C++의 객체 초기화는 중구난방!물론 규칙은 있다.C++의 C 부분은 사용하고 있으며 런타임 비용이 소모될 수 있는 상황이라면 초기화 된다는 보장이 없다.C가 아닌 부분은 때때로 달라진다.예시) 배열 vs 백터 모든 것을 해결하는 방법!모든 객체를 사용하기 전에 항상 초기화 하는 것. 생성자대입(assignment)과 초기화(initialization)을 구분하자. 1234567891011121314151617181920212223242526272829303132333435363738394041424344// ConsoleApplication7.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.//// 작성자 조민혁 #include "stdafx.h"#include class MyClass{p.. 더보기
pointer vs reference (more effective c++ 01) 기본용어pointer - 포인터 "*", 포인터 연산 - "->"reference - 참조자 "." 무엇이 다른가요?참조자 개념엔 널 참조자(null reference)가 없다.객체를 함조하는 어떤 변수가 가리키는 메모리는 항상 유효한 객체여야만 한다.참조자를 썼다는 것은 그 변수가 널일 가능성을 완전히 배제할때 사용해야한다. 12345678910111213141516171819202122232425262728// ConsoleApplication6.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.// #include "stdafx.h"#include using namespace std;int _tmain(int argc, _TCHAR* argv[]){ // 에러 참조자는 반드시 초기화 해야한다.. 더보기
private 상속에 대하여(effective c++ 39) public 상속?C++는 public 상속을 is-a 관계로 나타낸다. private 상속을 하게 되면 어떤일이 생기나요?- 컴파일러는 파생 클래스 객체를 기본 클래스 객체로 변환하지 않는다. - 베이스 클래스로부터 물려받은 멤버에서 파생 클래스에서 모조리 private 맴버가 된다. 베이스 클래스에서 protected 이거나 public이어도. private 상속은 그 자체로 구현 기법 중 하나.- 구현만 물려받을 수 있으며 인터페이스는 허용하지 않는다.- 소프트웨어 설계 도중에는 아무런 의미가 없다. 단지 소프트웨어 구현(implementation) 중에만 의미를 가진다. 현실적으로 private 상속 대신에 public 상속에 객체 합성 조합이 더 즐겨 쓰는 방법이긴하다.장점은 무엇인가?- 객체 .. 더보기