我寫了一個代表Qubit的類。所以對象只有一個值,狀態,0或1(布爾)。爲了進行必要的計算,我重載了像+,*,^這樣的運算符。 似乎一切都可以用+和*,還有^,但只有當我不會將它與std :: ostream運算符一起使用。使用std :: ostream運算符的XOR運算符
Qubit x5, x6;
cout << x5^x6; !ERROR!
但
Qubit x5, x6;
Qubit z = x5^x6;
cout << z;
它的工作。我的標準:運營商
std::ostream & operator <<(std::ostream & os, const Qubit & qubit)
{
os << qubit.GetState();
return os;
}
和我的XOR運算
Qubit & Qubit::operator ^(const Qubit & qubit)
{
Qubit *q = new Qubit;
((this->state == 1 && qubit.state == 0) ||
(this->state == 0 && qubit.state == 1)) ? q->SetState(1) : q->SetState(0);
return *q;
}
回到您的C++書籍,並查看有關運算符優先級的章節。 –
http://en.cppreference.com/w/cpp/language/operator_precedence –
你在'operator ^'函數中有內存泄漏。還要詳細瞭解[運算符重載](http://en.cppreference.com/w/cpp/language/operators),特別是規範[二進制算術運算符部分](http://en.cppreference.com/w/cpp /語言/運營商#Binary_arithmetic_operators)。注意這個例子告訴你通過值*返回*而不是通過引用返回。 –