Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
beteendeförändring: "member1" anropas i stället för "member2"
Anmärkningar
En rvalue kan inte bindas till en icke-const-referens. I versioner av Visual C++ före Visual Studio 2003 gick det att binda ett rvalue till en referens som inte är en const-referens i en direkt initiering. Den här koden ger nu en varning.
För bakåtkompatibilitet är det fortfarande möjligt att binda rvalues till icke-const-referenser, men standardkonverteringar föredras där det är möjligt.
Den här varningen representerar en ändring av beteendet från kompilatorn Visual C++ .NET 2002. Om den här varningen är aktiverad kan den eventuellt ges för rätt kod. Det kan till exempel ges när du använder klassmallen std::auto_ptr .
Om du får den här varningen undersöker du koden för att se om den är beroende av att rvalues binds till referenser som inte är const-referenser. Att lägga till en const till referensen eller tillhandahålla ytterligare en överlagring av const-reference kan lösa problemet.
Den här varningen är inaktiverad som standard. Mer information finns i Kompilatorvarningar som är inaktiverade som standard.
Example
I följande exempel genereras C4350:
// C4350.cpp
// compile with: /W1
#pragma warning (default : 4350)
class A {};
class B
{
public:
B(B&){}
// try the following instead:
// B(const B&){}
B(A){}
operator A(){ return A();}
};
B source() { return A(); }
int main()
{
B ap(source()); // C4350
}