c++ 이론테스트 3차 - 20문제
int 자료형의 크기를 고르시오.
- 1byte
- 2byte
- 4byte
- 8byte
4byte
char 자료형의 크기를 고르시오.
- 4byte
- 1byte
- 8byte
- 16byte
1byte
short 자료형의 크기를 고르시오
- 2byte
- 1byte
- 8byte
- 4byte
2byte
int*의 크기를 고르시오. (64bit)
- 1byte
- 4byte
- 16byte
- 8byte
8byte
float의 크기를 고르시오.
- 2byte
- 1byte
- 4byte
- 64byte
4byte
int는 어떤 자료형인지 고르시오.
- 실수형
- 정수형
- 문자형
- 논리형
정수형
bool 자료형에 대한 설명으로 옳은 것을 고르시오.
- 정수형을 나타내는 자료형이다.
- 4byte 크기를 가진 자료형이다.
- 참,거짓(논리형) 을 나타내는 자료형이다.
- 1은 거짓, 0은 참을 나타낸다.
참,거짓(논리형) 을 나타내는 자료형이다.
int 자료형에 대한 설명으로 옳지 않은 것을 고르시오.
- 음수는 표현 할 수 없는 자료형이다.
- c++에서 기본적으로 제공하는 기본 자료형 중 하나이다.
- 정수를 나타내는 자료형이다.
- 4byte 크기를 가진 자료형이다.
음수는 표현 할 수 없는 자료형이다.
double*의 크기를 고르시오.(64bit)
- 8byte
- 16byte
- 1byte
- 4byte
8byte
1byte의 크기를 bit 변환시 몇 bit인지 옳은 것을 고르시오.
- 1bit
- 64bit
- 32bit
- 8bit
8bit
열거형에 대한 설명으로 옳은 것을 고르시오.
- enum 혹은 enum class 형식으로 선언한다.
- 자료형으로 사용이 불가능하다.
- 멤버변수로 사용이 불가능하다.
- 음수는 지정해 줄 수 없다.
enum 혹은 enum class 형식으로 선언한다.
아래 enum class Color의 크기로 옳은 것을 구하시오.
enum class Color : unsigned char
{
Red = 1,
Blue,
Green
};
- 1byte
- 4byte
- 8byte
- 3byte
1byte
포인터에 대한 설명으로 옳지 않은 것을 고르시오.
- 주소를 담는 자료형이다.
- 32bit 운영체제에서는 크기가 4byte이다.
- 역참조를 통해 값을 변경 할 수 있다.
- 참조된 대상을 변경 할 수 없다.
참조된 대상을 변경 할 수 없다.
지역변수에 대한 설명으로 옳지 않은 것을 고르시오.
- 프로그램 실행 시에 생성되고, 종료 시 메모리에서 해제된다.
- 코드블록내에 선언 된 변수이다.
- 지역변수는 선언 시 스택영역에 생성 된다.
- 선언 후 값의 변경이 가능하다.
프로그램 실행 시에 생성되고, 종료 시 메모리에서 해제된다.
전역변수에 대한 설명으로 옳지 않은 것을 고르시오.
- 데이터 영역에 저장 된다.
- 컴파일 타임에 메모리 크기와 위치가 정해진다.
- 프로그램 종료 시 자동 해제 된다.
- 파일 상관 없이 어디서든 접근이 가능하다.
파일 상관 없이 어디서든 접근이 가능하다.
배열에 대한 설명으로 옳은 것을 고르시오.
- 다른 타입의 자료형들도 하나의배열로 선언이 가능하다.
- 배열의 크기는 자료형의 크기와 무관하다.
- 연속된 메모리 영역을 가지는 자료구조이다.
- 배열은 선언 시 반드시 데이터 영역에 선언된다.
연속된 메모리 영역을 가지는 자료구조이다.
C++ 메모리 영역이 아닌것을 고르시오.
- 데이터
- 코드
- 힙
- 레지스터
레지스터
메모리 영역의 설명으로 옳지 않은 것을 고르시오.
- 코드 : 프로그램의 실행 코드가 저장되는 영역
- 데이터 영역 : 전역변수와 정적변수가 저장되는 영역이다.
- 힙 : 동적 메모리 할당에 사용되는 영역으로 C++ 컴파일러에 의해 자동으로 할당 및 해제가 된다.
- 스택 : 함수 호출 시 지역변수와 매개변수가 저장되는 영역이다.
힙 : 동적 메모리 할당에 사용되는 영역으로 C++ 컴파일러에 의해 자동으로 할당 및 해제가 된다.
C++ 4가지 형변환에 대해 옳지 않은 것 을 고르시오
- static_cast
- dynamic_cast
- const_cast
- convert
convert
▶️ c++의 4대 형변환
static_cast : 컴파일 타임에 처리되는 변환. 가장 기본이 되는 타입변환
dynamic_cast : 런타임에 처리되는 변환. 다형성을 가진 객체만 사용 가능.
const_cast : const 속성 해제.
reinterpret_cast : 컴파일러가 타입 변환에 대한 검사 없음. 그렇기 때문에 형변환이 다 가능하지만 안정성에 대한 책임은 없다. 강제로 형변환을 시켜버린다.
dynamic_cast 에 대한 설명으로 옳은 것을 고르시오.
- 주로 클래스 상속관계에서 사용되며 무조건 적으로 형변환이 가능하다.
- 주로 클래스 상속관계에서 사용되며 안전한 다운캐스팅을 지원한다.
- 컴파일타임에 타입 검사를 시행한다.
- 자식->부모로 업캐스팅시에도 반드시 사용하여야 한다.
주로 클래스 상속관계에서 사용되며 안전한 다운캐스팅을 지원한다.
다음 중 레퍼런스의 특징을 고르시오.
- 대상을 참조하여 값을 변경할 수 있다.
- 참조 대상을 변경 할 수 있다.
- 함수의 인자로 사용할 수 없다.
- 대상을 상수화 시킨다.
대상을 참조하여 값을 변경할 수 있다.
const 키워드에 대해 옳은 것을 고르시오.
- 지역변수에만 사용 할 수 있다.
- 정적변수를 선언 할때 사용하는 키워드 이다.
- 클래스를 통해 만들어진 객체 앞에는 붙일 수 없다.
- 변수 앞에 붙이면 변수를 상수화 시킨다.
변수 앞에 붙이면 변수를 상수화 시킨다.
2. 정적 변수를 선언할때 사용하는 키워드는 static
3. 클래스를 통해 만들어진 객체앞에 붙일 경우 멤버변수의 값을 바꿀 수 없는 객체가 만들어진다.
다음 중 동적 할당의 특징을 고르시오.
- 프로그램이 시작될 때 메모리에 공간이 할당된다.
- 프로그램이 종료될 때 메모리에서 제거된다.
- 원하는 시점에 메모리에 공간을 할당할 수 있다.
- 동적할당은 배열 생성이 불가능하다.
원하는 시점에 메모리에 공간을 할당할 수 있다.
구조체의 특징이 아닌 것을 고르시오.
- 다른 타입의 변수들을 하나로 모아 사용할 수 있는 기능을 제공한다.
- 인덱스를 이용하여 구조체를 구성하는 각 요소에 접근할 수 있다.
- 구조체도 포인터 타입 변수를 선언할 수 있다.
- 구조체도 배열 변수를 선언할 수 있다.
인덱스를 이용하여 구조체를 구성하는 각 요소에 접근할 수 있다.
void* 타입에 대한 특징을 고르시오.
- void 타입 변수의 주소만 저장이 가능하다.
- 역참조가 가능하다.
- 어떤 타입의 메모리 주소라도 저장이 가능하다.
- 하나의 주소를 저장하고 있다면 다른 주소를 저장할 수 없다.
어떤 타입의 메모리 주소라도 저장이 가능하다.
#inlcude 전처리지시자의 설명으로 옳은 것을 고르시오.
- 프로그램 구동 중에 해석되는 지시자이다.
- 컴파일 타임 중 전처리에 구문이 해석된다.
- 아무 역할도 없다.
- 코드를 상수화 처리 한다.
컴파일 타임 중 전처리에 구문이 해석된다.
c++ 컴파일 단계에 대해 옳은 것을 고르시오
- 전처리 : 전처리기에 의해 처리되며 전처리지시문 등을 해석하여 기계어로 만든다..
- 컴파일 : 컴파일러에 의해 처리 되며 해당 과정을 통해 실행파일이 생성된다.
- 링크 : 링커를 통해 여러 목적파일들을 하나로 결합하여 하나의 실행파일로 만든다.
- 어셈블 : 소스코드를 어셈블리어로 변환한다.
링크 : 링커를 통해 여러 목적파일들을 하나로 결합하여 하나의 실행파일로 만든다.
C++에서 구조체와 클래스의 차이에 대해 옳은 것을 고르시오.
- 구조체는 상속이 불가능하다.
- 구조체는 private 접근지정자의 사용이 불가능하다.
- 기본 접근지정자의 차이말고는 차이가 없다.
- 구조체는 내부적으로 함수를 만들 수 없다.
기본 접근지정자의 차이말고는 차이가 없다.
template에 대한 단점으로 옳은 것을 고르시오.
- 런타임 오버헤드가 증가한다.
- 컴파일 오버헤드가 증가한다.
- 코드 재사용성이 떨어진다.
- 타입 안정성이 떨어진다.
컴파일 오버헤드가 증가한다.
아래 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;
};
- 32byte
- 40byte
- 24byte
- 20byte
40byte
함수 오버로딩과 오버라이딩에 대한 설명으로 옳은 것을 고르시오.
- 함수 오버로딩 : 같은 이름의 함수를 매개변수의 개수나 타입을 다르게 정의하는 것을 말한다. 상속 관계에서는 사용 할 수 없다.
- 함수 오버로딩 : 같은 이름의 함수를 매개변수의 갯수 혹은 타입을 다르게 지정하여 정의 하는 것을 말한다.
- 함수 오버라이딩 : 부모클래스의 함수 중 매개변수의 개수나 타입을 다르게 정의하는것을 말한다.
- 함수 오버라이딩 과 오버로딩은 차이가 없다.
함수 오버로딩 : 같은 이름의 함수를 매개변수의 갯수 혹은 타입을 다르게 지정하여 정의 하는 것을 말한다.
순수 가상함수에 대한 설명으로 옳지 않은 것을 고르시오.
- 자식 클래스에서 반드시 재정의 해주어야 한다.
- 순수 가상함수가 선언 된 클래스는 추상 클래스가 된다.
- 순수가상함수의 선언시에는 abstract 키워드를 사용 할 수 있다.
- 순수 가상함수가 선언 된 클래스도 객체 생성이 가능하다.
순수 가상함수가 선언 된 클래스도 객체 생성이 가능하다.
싱글턴 패턴에 대한 설명으로 옳은 것을 고르시오.
- 프로그램의 의존성을 증가시키지 않으며, 단점이 존재하지 않는 패턴이다.
- 해당 클래스의 객체가 하나만 생성하도록 보장하는 패턴이다.
- 해당 객체를 복사하여 생성하기 위한 패턴이다.
- 프로그램 실행 중 기능들을 하나의 객체로 나누어 실행하는 패턴이다.
해당 클래스의 객체가 하나만 생성하도록 보장하는 패턴이다.
this 포인터에 대한 설명으로 옳은 것을 고르시오.
- 객체 자기 자신을 가르키는 포인터 이다.
- 내부적으로 생성되므로 함수 내부에서 명시적으로 사용 할 수 없다.
- 클래스 내부 멤버함수를 가르키는 포인터이다.
- 같은 이름의 클래스로 생성된 객체라면 동일한 값을 가지는 것을 보장한다.
- 객체 자기 자신을 가르키는 포인터 이다.
다형성에 대한 설명으로 옳은 것을 고르시오.
- 상속을 통해 구현되며 객체지향의 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;
}
- c1_size : 4byte, c2_size : 4byte
- c1_size : 4byte, c2_size : 8byte
- c1_size : 4byte, c2_size : 1byte
- c1_size : 8byte, c2_size : 8byte
c1_size : 4byte, c2_size : 8byte
32비트 운영체제와 64비트 운영체제의 대한 설명으로 옳은 것을 고르시오.
- x86으로 작성된 프로그램은 64비트 운영체제에서는 실행이 불가능하다.
- 둘은 차이가 없다.
- 32비트 운영체제는 x86으로 작성된 프로그램만 지원한다.
- x86운영체제에서 메모리 크기만 여유가 있다면 더 큰 주소공간도 접근이 가능하다.
32비트 운영체제는 x86으로 작성된 프로그램만 지원한다.
해당 코드에서 지역변수 number의 최종값으로 옳은 것을 고르시오.
int Func(int param = 0)
{
++param;
return param;
}
int main()
{
int number = 100;
Func(number);
Func(number);
return 0;
}
- 100
- 0
- 101
- 102
100
동적배열에 대한 설명으로 옳은 것을 고르시오.
- 배열의 크기는 컴파일타임에 정해진다.
- 동적으로 배열의 크기를 조절 할 수 있는 배열이다.
- int 형 동적배열 선언시에는 int arr[idx] 형태로 선언한다.
- 배열의 크기가 한번 정해지면 변경이 불가능하다.
동적으로 배열의 크기를 조절 할 수 있는 배열이다.
함수포인터에 대한 설명으로 옳지 않은 것을 고르시오.
- 함수의 주소를 저장하는 포인터이다.
- 함수의 주소는 존재하지 않는다.
- 함수의 주소를 통해 함수를 호출 할 수 있다.
- 상속 관계에서 가상함수 테이블에는 가상함수의 함수주소가 들어가 있다.
함수의 주소는 존재하지 않는다.