구성원 변수의 초기화 확인
class People{
private:
string ID;
int birth;
public:
//
People(string & id,int data){
ID=id;
birth=data;
}
//
People(string id,int data):ID(id),birth(data){
}
};
C++ 규정: 대상 구성원의 초기화 동작은 구조 함수 본체에 들어가기 전에 발생합니다.
값을 부여하는 구조 함수를 바탕으로 먼저 구성원 변수에 초기 값을 설정한 다음에 바로 값을 부여한다.따라서 대부분의 유형에 있어default 구조 함수를 먼저 호출한 다음에copy assignment 조작부호를 호출하는 것보다 한 번에copy 구조 함수를 호출하는 것이 비교적 효율적이다.내장 구성원, 예를 들어 int의 초기화와 할당 비용은 같다.
구성원 변수 사용 초기화의 필요성은 다음과 같다. 만약 변수가reference나const를 사용한다면, 그들은 반드시 초기 값을 필요로 하고, 값을 부여받을 수 없다.
어떤 때는 대상의 구성원이 너무 많아서 반복되는 작업을 피하기 위해 초기화 목록을 계속 사용하지 않고 초기화 표현과 같은 구성원 변수를 초기화 동작으로 바꾸어 하나의 함수체에 봉하여 구조 함수에 호출할 수 있다.
구성원 변수에 대한 초기화는 변수 성명 방식에 따라 진행되며 초기화 순서와 무관합니다.
어떤 때는 초기화할 때 static 대상 ------글로벌 대상을 포함하고namespace 역할 영역에 정의된 대상,class 함수 내,file 역할 영역에 성명된 static 대상을 포함한다.함수체에 성명된 static 대상은local static 대상이고 다른 static 대상은non-local static 대상(함수체에 비한)이다.
C++는 서로 다른 컴파일러 단위 내의non-local static 대상의 초기화에 대한 상대적인 순서가 명확하게 정의되지 않았기 때문에 문제가 발생할 수 있습니다. 어떤 대상을 호출할 때 대상이 초기화되지 않았을 수도 있습니다.해결책은 non-local static 대상을static 대상으로 변환하고 모든non-local static 대상을 자신의 전속 함수 체내로 옮기는 것이다(대상은 함수체에서static로 성명됨). 이 함수는reference가 포함하는 대상을 가리킨다.그 다음에 이 함수들을 호출해서 조작을 하는데, 이 대상을 직접 가리키지 않는다.그러나 다선정에 대해서는 수동으로 함수 호출을 해야 한다.
People & ps(){
static People p;
return p;
}
요약:
모든 구조 함수는 대상을 초기화하고 구성원에 내장된 대상을 수동으로 초기화합니다.
AC: 45503780
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
visual 스튜디오 컨트롤 데이터gridview 조작인터넷상에서 데이터gridview 연결 데이터베이스에 대한 조작이 이미 매우 많은데, 여기서는 군말을 많이 하지 않았습니다. 다음은 표를 사용할 때 사용하는 구체적인 조작들입니다 1.코드 생성 데이터gridview ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.