'논리오류'에 해당되는 글 1건

  1. 2011.05.31 놓치기 쉬운 에러
2011.05.31 10:18

구문오류 : 특정한 프로그래밍언어에서 쓰이도록 고안된 일련의 문자열이나 문자블록의 구문속 오류.

논리오류 : 프로그램의 흐름이 잘못되어 실행이 불가능 하거나 결과를 얻을 수 없는 오류.

 

*클래스, 배열, STL(vector,pair 등) 등은 선언 후에는 중괄호 {} 초기화가 안된다.

1) std::vector<int> a = {0};

2) std::vector<int> a; a = {0};

1,2의 경우가 에러가 발생하는 경우이다.

왜냐하면, 클래스 등은 명령코드로 뛰는(함수처럼) 일종의 포인터를 갖고 있기때문에 중괄호 또는

memcpy를 이용한 초기화가 안된다.

 

*클래스 내부 멤버변수 초기화

class Test
{
public:
 static double rate = 6.5; //에러!

                                  //정적 상수(const staitc) 정수계열의 데이터만 클래스내부초기화 가능
 static const int vec = 20;//정상


 int a[vec];//정상
 static std::vector<double> vec2(vec);//에러!

                                                      //벡터는 푸시를 했을때 공간을 할당 하는 구조이기 때문에

                                                      //저런식의 초기화는 불가능, 단 다른벡터의 복사본으로 초기화를 하면 된다.(main에서)
};

 

신고
Posted by 우엉 여왕님!! ghostkyow

티스토리 툴바