Здравствуйте, Аноним, Вы писали:
А>В чем разница между reference & и pointer *?
А>Или же они заменяют друг друга...
Ну например в этом:
1)
void func1(MyCoolClass *obj)
{
obj->SomeFunc();
}
void func2(MyCoolClass &obj)
{
obj.SomeFunc();
}
main()
{
MyCoolClass someObj;
func1(0); // Приплыли
func2(someObj); // Обязаны подать существующий объект, иначе компилятор отматерит
}
2)
MyCoolClass* func1()
{
MyCoolClass *obj = new MyCoolClass;
return obj;
}
MyCoolClass& func2()
{
MyCoolClass val;
return val; // Убивать за такое надо
}
main()
{
func1()->SomeFunc(); // Если возвращается не нулевой объект, то работает
MyCoolClass *obj = func1(); // То же самое..
obj->SomeFunc();
func2().SomeFunc(); // Работает!
MyCoolClass &refObj = func2();
refObj.SomeFunc(); // ОЙ! А что случилось? Access violation
}
3)
void func() throw(MyCoolException)
{
throw MyCoolException();
}
main()
{
try
{
func();
}
catch(MyCoolException)
{
// Нормально - обработали
}
try
{
func();
}
catch(MyCoolException&)
{
// Нормально - обработали
}
try
{
func();
}
catch(const MyCoolException&)
{
// Нормально - обработали
}
try
{
func();
}
catch(MyCoolException*)
{
// Мы никогда сюда не попадём
}
}
А вообще — возьмите и почитайте какую-нибудь книжку по C++. Например, Страуструпа...
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.