Я смотрю библиотеку c ++ и вижу класс istream, меня смущает подрядчик с символом адреса.что означает конструктор с символом адреса?
один из конструкторов istream:
protected: iostream& (iostream&& x);
Я нашел его на сайте cplusplus.com,
ссылка: iostream
Я определил класс клиента с похожим конструктором, который имеет символ &:
//Test.cpp
#include <iostream>/*cout,cin*/
#include <typeinfo>/*typeid(),name()*/
using namespace std;
struct MyTest{
MyTest&(double b){}
};
int main(int argc,char* argv[]){
MyTest mt2(2.1);
cout << typeid(mt2).name() << endl;
return 0;
}
Я использую приведенную ниже команду для его компиляции:
g++ Test.cpp -o Test -std=c++11
однако я получаю некоторые сообщения об ошибках компиляции:
Test.cpp:7:11: error: expected unqualified-id before ‘float’
MyTest&(float b){}
^
Test.cpp:7:11: error: expected ‘)’ before ‘float’
Test.cpp:7:10: error: expected ‘;’ at end of member declaration
MyTest&(float b){}
^
Test.cpp:7:17: error: expected ‘;’ at end of member declaration
MyTest&(float b){}
^
Test.cpp:7:18: error: expected unqualified-id before ‘)’ token
MyTest&(float b){}
^
Test.cpp: In function ‘int main(int, char**)’:
Test.cpp:12:16: error: no matching function for call to ‘MyTest::MyTest(double)’
MyTest mt2(2.1);
Я запутался, класс C ++ библиотеки istream в порядке.почему мой пользовательский конструктор класса потерпел неудачу?что мне не хватает?