행렬을 나타내는 클래스를 작성했으며 모두 산술 연산자를 무시합니다. 다음은 단항 마이너스 과부하의 예연산자 오버로드 및 개체에 대한 포인터, C++
RegMatrix.h :
const RegMatrix operator -();
RegMatrix.cpp
const RegMatrix RegMatrix::operator -()
{
RegMatrix newMatrix(*this);
newMatrix *= -1;
return newMatrix;
}
이 같은 스택에 객체를 생성 할 때 이제이 완벽하게 작동합니다 RegMatrix a(3,3,v)
(v는 값의 벡터이며 중요하지 않음). 내가 (MAIN.CPP에서)이 같은 new
키워드를 사용하는 경우 :
RegMatrix* a = new RegMatrix(3,3,v);
RegMatrix* b = -a; //<---ERROR HERE
을 내가 왜 이런 일 wrong type argument to unary minus
어떤 아이디어를 얻을? 감사!
P. 또 다른 질문 : '='연산자가 자동으로 복사 생성자에 의해 무시됩니다.
'operator ='는 복사 생성자가 _not_을 재정의했습니다. 너는 너 자신 그것을 무시해야한다. 그러나'= '연산자 _at 선언 _을 사용하면 복사 생성자가 호출됩니다. 다른 곳에서는'operator ='가 호출됩니다. –
@Etienne de Martel :'operator ='는 ** overriden **이 아니지만 ** 과부하 **입니다. 표준에서는 특별히 ** overriden ** 함수에 ** virtual ** 키워드를 사용해야합니다. –
@Als Wooops. 나는 항상이 두 용어를 혼동한다. –