개발개발/c++ 이론연습

c++ 이론테스트 3차 - 20문제

유잉유잉유잉 2025. 1. 18. 15:13
728x90

int 자료형의 크기를 고르시오.

  1. 1byte
  2. 2byte 
  3. 4byte 
  4. 8byte
더보기

4byte 



char 자료형의 크기를 고르시오.

  1. 4byte
  2. 1byte 
  3. 8byte
  4. 16byte
더보기

1byte 

 

 

 

 

short 자료형의 크기를 고르시오

  1. 2byte
  2. 1byte
  3. 8byte
  4. 4byte
더보기

2byte

 

 

int*의 크기를 고르시오. (64bit)

  1. 1byte
  2. 4byte
  3. 16byte
  4. 8byte
더보기

8byte

 

 

float의 크기를 고르시오.

  1. 2byte
  2. 1byte
  3. 4byte
  4. 64byte
더보기

4byte

 

 

int는 어떤 자료형인지 고르시오.

  1. 실수형
  2. 정수형
  3. 문자형
  4. 논리형
더보기

정수형

 

 

bool 자료형에 대한 설명으로 옳은 것을 고르시오.

  1. 정수형을 나타내는 자료형이다.
  2. 4byte 크기를 가진 자료형이다.
  3. 참,거짓(논리형) 을 나타내는 자료형이다.
  4. 1은 거짓, 0은 참을 나타낸다.
더보기

참,거짓(논리형) 을 나타내는 자료형이다.

 



int 자료형에 대한 설명으로 옳지 않은 것을 고르시오.

  1. 음수는 표현 할 수 없는 자료형이다. 
  2. c++에서 기본적으로 제공하는 기본 자료형 중 하나이다.
  3. 정수를 나타내는 자료형이다.
  4. 4byte 크기를 가진 자료형이다.
더보기

음수는 표현 할 수 없는 자료형이다. 

 



double*의 크기를 고르시오.(64bit)  

  1. 8byte
  2. 16byte
  3. 1byte
  4. 4byte
더보기

8byte

 



1byte의 크기를 bit 변환시 몇 bit인지 옳은 것을 고르시오.

  1. 1bit
  2. 64bit
  3. 32bit
  4. 8bit
더보기

8bit

 



열거형에 대한 설명으로 옳은 것을 고르시오.

  1. enum 혹은 enum class 형식으로 선언한다.
  2. 자료형으로 사용이 불가능하다.
  3. 멤버변수로 사용이 불가능하다.
  4. 음수는 지정해 줄 수 없다.
더보기

enum 혹은 enum class 형식으로 선언한다.

 



아래 enum class Color의 크기로 옳은 것을 구하시오.

enum class Color : unsigned char
{
    Red = 1,
    Blue,
    Green
};
  1. 1byte 
  2. 4byte
  3. 8byte
  4. 3byte
더보기

1byte 

 



포인터에 대한 설명으로 옳지 않은 것을 고르시오.

  1. 주소를 담는 자료형이다.
  2. 32bit 운영체제에서는 크기가 4byte이다.
  3. 역참조를 통해 값을 변경 할 수 있다.
  4. 참조된 대상을 변경 할 수 없다.
더보기

참조된 대상을 변경 할 수 없다.

 



지역변수에 대한 설명으로 옳지 않은 것을 고르시오.

  1. 프로그램 실행 시에 생성되고, 종료 시 메모리에서 해제된다.
  2. 코드블록내에 선언 된 변수이다.
  3. 지역변수는 선언 시 스택영역에 생성 된다.
  4. 선언 후 값의 변경이 가능하다.
더보기

프로그램 실행 시에 생성되고, 종료 시 메모리에서 해제된다.

 



전역변수에 대한 설명으로 옳지 않은 것을 고르시오. 

  1. 데이터 영역에 저장 된다.
  2. 컴파일 타임에 메모리 크기와 위치가 정해진다.
  3. 프로그램 종료 시 자동 해제 된다.
  4. 파일 상관 없이 어디서든 접근이 가능하다.
더보기

파일 상관 없이 어디서든 접근이 가능하다. 

 



배열에 대한 설명으로 옳은 것을 고르시오.

  1. 다른 타입의 자료형들도 하나의배열로 선언이 가능하다.
  2. 배열의 크기는 자료형의 크기와 무관하다.
  3. 연속된 메모리 영역을 가지는 자료구조이다.
  4. 배열은 선언 시 반드시 데이터 영역에 선언된다.
더보기

연속된 메모리 영역을 가지는 자료구조이다.

 



C++ 메모리 영역이 아닌것을 고르시오.

  1. 데이터
  2. 코드
  3. 레지스터
더보기

레지스터

 



메모리 영역의 설명으로 옳지 않은 것을 고르시오.

  1. 코드 : 프로그램의 실행 코드가 저장되는 영역
  2. 데이터 영역 : 전역변수와 정적변수가 저장되는 영역이다.
  3. 힙 : 동적 메모리 할당에 사용되는 영역으로 C++ 컴파일러에 의해 자동으로 할당 및 해제가 된다.
  4. 스택 : 함수 호출 시 지역변수와 매개변수가 저장되는 영역이다.
더보기

힙 : 동적 메모리 할당에 사용되는 영역으로 C++ 컴파일러에 의해 자동으로 할당 및 해제가 된다.

 

 

 

C++ 4가지 형변환에 대해 옳지 않은 것 을 고르시오

  1. static_cast
  2. dynamic_cast
  3. const_cast
  4. convert 
더보기

convert

 

▶️ c++의 4대 형변환

static_cast : 컴파일 타임에 처리되는 변환. 가장 기본이 되는 타입변환

dynamic_cast : 런타임에 처리되는 변환. 다형성을 가진 객체만 사용 가능.

const_cast : const 속성 해제.

reinterpret_cast : 컴파일러가 타입 변환에 대한 검사 없음. 그렇기 때문에 형변환이 다 가능하지만 안정성에 대한 책임은 없다. 강제로 형변환을 시켜버린다.

 



dynamic_cast 에 대한 설명으로 옳은 것을 고르시오.

  1. 주로 클래스 상속관계에서 사용되며 무조건 적으로 형변환이 가능하다.
  2. 주로 클래스 상속관계에서 사용되며 안전한 다운캐스팅을 지원한다.
  3. 컴파일타임에 타입 검사를 시행한다.
  4. 자식->부모로 업캐스팅시에도 반드시 사용하여야 한다.
더보기

주로 클래스 상속관계에서 사용되며 안전한 다운캐스팅을 지원한다.

 



다음 중 레퍼런스의 특징을 고르시오.

  1. 대상을 참조하여 값을 변경할 수 있다.
  2. 참조 대상을 변경 할 수 있다. 
  3. 함수의 인자로 사용할 수 없다.
  4. 대상을 상수화 시킨다.
더보기

대상을 참조하여 값을 변경할 수 있다.

 



const 키워드에 대해 옳은 것을 고르시오.

  1. 지역변수에만 사용 할 수 있다.
  2. 정적변수를 선언 할때 사용하는 키워드 이다.
  3. 클래스를 통해 만들어진 객체 앞에는 붙일 수 없다.
  4. 변수 앞에 붙이면 변수를 상수화 시킨다.
더보기

변수 앞에 붙이면 변수를 상수화 시킨다.

 

2. 정적 변수를 선언할때 사용하는 키워드는 static

3. 클래스를 통해 만들어진 객체앞에 붙일 경우 멤버변수의 값을 바꿀 수 없는 객체가 만들어진다.

 




다음 중 동적 할당의 특징을 고르시오.

  1. 프로그램이 시작될 때 메모리에 공간이 할당된다.
  2. 프로그램이 종료될 때 메모리에서 제거된다.
  3. 원하는 시점에 메모리에 공간을 할당할 수 있다.
  4. 동적할당은 배열 생성이 불가능하다.
더보기

원하는 시점에 메모리에 공간을 할당할 수 있다.

 



구조체의 특징이 아닌 것을 고르시오.

  1. 다른 타입의 변수들을 하나로 모아 사용할 수 있는 기능을 제공한다.
  2. 인덱스를 이용하여 구조체를 구성하는 각 요소에 접근할 수 있다.
  3. 구조체도 포인터 타입 변수를 선언할 수 있다.
  4. 구조체도 배열 변수를 선언할 수 있다.
더보기

인덱스를 이용하여 구조체를 구성하는 각 요소에 접근할 수 있다.

 



void* 타입에 대한 특징을 고르시오.

  1. void 타입 변수의 주소만 저장이 가능하다.
  2. 역참조가 가능하다.
  3. 어떤 타입의 메모리 주소라도 저장이 가능하다.
  4. 하나의 주소를 저장하고 있다면 다른 주소를 저장할 수 없다.
더보기

어떤 타입의 메모리 주소라도 저장이 가능하다.

 



#inlcude    전처리지시자의 설명으로 옳은 것을 고르시오.

  1. 프로그램 구동 중에 해석되는 지시자이다.
  2. 컴파일 타임 중 전처리에 구문이 해석된다.
  3. 아무 역할도 없다.
  4. 코드를 상수화 처리 한다.
더보기

컴파일 타임 중 전처리에 구문이 해석된다.

 



c++ 컴파일 단계에 대해 옳은 것을 고르시오

  1. 전처리 : 전처리기에 의해 처리되며 전처리지시문 등을 해석하여 기계어로 만든다..
  2. 컴파일 : 컴파일러에 의해 처리 되며 해당 과정을 통해 실행파일이 생성된다. 
  3. 링크 : 링커를 통해 여러 목적파일들을 하나로 결합하여 하나의 실행파일로 만든다.
  4. 어셈블 : 소스코드를 어셈블리어로 변환한다.
더보기

링크 : 링커를 통해 여러 목적파일들을 하나로 결합하여 하나의 실행파일로 만든다.

 



C++에서 구조체와 클래스의 차이에 대해 옳은 것을 고르시오.

  1. 구조체는 상속이 불가능하다.
  2. 구조체는 private 접근지정자의 사용이 불가능하다.
  3. 기본 접근지정자의 차이말고는 차이가 없다.
  4. 구조체는 내부적으로 함수를 만들 수 없다.
더보기

기본 접근지정자의 차이말고는 차이가 없다.

 



template에 대한 단점으로 옳은 것을 고르시오.

  1. 런타임 오버헤드가 증가한다. 
  2. 컴파일 오버헤드가 증가한다.
  3. 코드 재사용성이 떨어진다.
  4. 타입 안정성이 떨어진다.
더보기

컴파일 오버헤드가 증가한다.

 



아래 CItem 클래스의 크기에 대해 옳은 것을 고르시오.(x64)

class COption

{
public:
    COption() {};
    ~COption() {};

public:
    int mID;
    long mIdx;

public:
    void CallBack()
    {
        std::cout << "Option Call Back" << std::endl;
    }
};

class CItem
{
public:
    CItem() {}
    ~CItem() {}

private:
    int mID;
    int mUID; 
    COption* mOption[3]; 
    double mValue;
};
  1. 32byte
  2. 40byte
  3. 24byte
  4. 20byte
더보기

40byte

 




함수 오버로딩과 오버라이딩에 대한 설명으로 옳은 것을 고르시오.

  1. 함수 오버로딩 : 같은 이름의 함수를 매개변수의 개수나 타입을 다르게 정의하는 것을 말한다. 상속 관계에서는 사용 할 수 없다.
  2. 함수 오버로딩 : 같은 이름의 함수를 매개변수의 갯수 혹은 타입을 다르게 지정하여 정의 하는 것을 말한다.
  3. 함수 오버라이딩 : 부모클래스의 함수 중 매개변수의 개수나 타입을 다르게 정의하는것을 말한다.
  4. 함수 오버라이딩 과 오버로딩은 차이가 없다.
더보기

함수 오버로딩 : 같은 이름의 함수를 매개변수의 갯수 혹은 타입을 다르게 지정하여 정의 하는 것을 말한다.

 



순수 가상함수에 대한 설명으로 옳지 않은 것을 고르시오.

  1. 자식 클래스에서 반드시 재정의 해주어야 한다.
  2. 순수 가상함수가 선언 된 클래스는 추상 클래스가 된다.
  3. 순수가상함수의 선언시에는 abstract 키워드를 사용 할 수 있다.
  4. 순수 가상함수가 선언 된 클래스도 객체 생성이 가능하다.
더보기

순수 가상함수가 선언 된 클래스도 객체 생성이 가능하다.

 



싱글턴 패턴에 대한 설명으로 옳은 것을 고르시오.

  1. 프로그램의 의존성을 증가시키지 않으며, 단점이 존재하지 않는 패턴이다.
  2. 해당 클래스의 객체가 하나만 생성하도록 보장하는 패턴이다.
  3. 해당 객체를 복사하여 생성하기 위한 패턴이다.
  4. 프로그램 실행 중 기능들을 하나의 객체로 나누어 실행하는 패턴이다.
더보기

해당 클래스의 객체가 하나만 생성하도록 보장하는 패턴이다.

 



this  포인터에 대한 설명으로 옳은 것을 고르시오.

  1. 객체 자기 자신을 가르키는 포인터 이다.
  2. 내부적으로 생성되므로 함수 내부에서 명시적으로 사용 할 수 없다.
  3. 클래스 내부 멤버함수를 가르키는 포인터이다.
  4. 같은 이름의 클래스로 생성된 객체라면 동일한 값을 가지는 것을 보장한다.
더보기
  1. 객체 자기 자신을 가르키는 포인터 이다.

 



다형성에 대한 설명으로 옳은 것을 고르시오.

  1. 상속을 통해 구현되며 객체지향의 4가지 특징 중 하나이다. 
  2. 상속을 통해 구현되지 않는다.
  3. 가상함수 혹은 순수 가상함수와는 상관이 없는 개념이다.
  4. 객체를 관리함에 있어서 유용하지 않은 특성이다.
더보기

상속을 통해 구현되며 객체지향의 4가지 특징 중 하나이다. 

 




해당 코드에서 c1_size와 c2_사이즈에 대해 옳게 연결된 것을 고르시오.(x64)

template<typename T>
class CContainer
{
public:
    CContainer() {}
    ~CContainer() {}

public:
    T mValue;
};

int main()
{
    CContainer<int>* c1 = new CContainer<int>();
    CContainer<int>* c2 = new CContainer<int>();

    size_t c1_size = sizeof(CContainer<int>);
    size_t c2_size = sizeof(c2);

    return 0;
}
  1. c1_size : 4byte, c2_size : 4byte
  2. c1_size : 4byte, c2_size : 8byte
  3. c1_size : 4byte, c2_size : 1byte
  4. c1_size : 8byte, c2_size : 8byte
더보기

c1_size : 4byte, c2_size : 8byte

 




32비트 운영체제와 64비트 운영체제의 대한 설명으로 옳은 것을 고르시오.

  1. x86으로 작성된 프로그램은 64비트 운영체제에서는 실행이 불가능하다.
  2. 둘은 차이가 없다.
  3. 32비트 운영체제는 x86으로 작성된 프로그램만 지원한다.
  4. x86운영체제에서 메모리 크기만 여유가 있다면 더 큰 주소공간도 접근이 가능하다.
더보기

32비트 운영체제는 x86으로 작성된 프로그램만 지원한다.

 




해당 코드에서 지역변수 number의 최종값으로 옳은 것을 고르시오.

int Func(int param = 0)
{
    ++param;
    return param;
}

int main()
{
    int number = 100;
    Func(number);
    Func(number);
    
    return 0;
}
  1. 100 
  2. 0
  3. 101
  4. 102

 




동적배열에 대한 설명으로 옳은 것을 고르시오.

  1. 배열의 크기는 컴파일타임에 정해진다.
  2. 동적으로 배열의 크기를 조절 할 수 있는 배열이다. 
  3. int 형 동적배열 선언시에는 int arr[idx] 형태로 선언한다.
  4. 배열의 크기가 한번 정해지면 변경이 불가능하다.
더보기

동적으로 배열의 크기를 조절 할 수 있는 배열이다. 

 




함수포인터에 대한 설명으로 옳지 않은 것을 고르시오.

  1. 함수의 주소를 저장하는 포인터이다.
  2. 함수의 주소는 존재하지 않는다. 
  3. 함수의 주소를 통해 함수를 호출 할 수 있다.
  4. 상속 관계에서 가상함수 테이블에는 가상함수의 함수주소가 들어가 있다.
더보기

함수의 주소는 존재하지 않는다. 

 




728x90