Citat:
NrmMyth:
Dali to znaci da gornji izraz nece biti vidljiv van C++/CLI assemblya? Pretpostavljam da da.
Nece se videti, bice prisutan u metadata, u npr. ovakvoj formi:
Code:
public int Test2(Class1 modreq(IsByValue) test)
C# i VB.NET kompajleri ne znaju kako da consume ovaj parametar i jednostavno ignorisu metod. Najgore je sto ni sam C++ ne moze da generise ovaj poziv, ne mozes cak ni da ga prevaris na jeftinu foru

:
Code:
public ref class Class1
{
public:
int Test2(Class1 test)
{
return 0;
}
int TestXXX()
{
return Test2(*this);
}
}
Dobijes bizarnu gresku (stvarno bi mogli da stave neku smisleniju):
cannot convert parameter 1 from 'Libcpp::Class1' to 'Libcpp::Class1'
Stari C++ (2003) mislim da cak nije ni dozvoljavao da bilo gde deklarises managed (__gc) klasu kao pass-by-value (requires toplevel *), cak iako si planirao da je zoves iz C++-a. Sad bar mozes da deklarises, ali ne vidim nacin kako bi mogao da je pozoves
Sve to ima smisla (inace bi to znacilo da CLR kreira shallow copy objekta na steku, i ode GC

)
Citat:
Zevs85: U c/c++
Code:
C/C++ : void F1(int* p)
pored prenosa objekta po referenci postoji i
Code:
C/C++ : void F1(int& p)
prenos reference objekta.
F1(int* p) i F1(int& p) su gotovo identicni po pozadinskom funkcionisanju. Razlika je samo sto int& stiti prenesenu referencu (pointer) od promene (const int* p).
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog
naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji
je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan,
sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv - Z.Đinđić