- Kod: Zaznacz cały
void funkcja(int i) {
if(i < 0) {
// Jak zakończyć działanie funkcji w tym miejscu?
}
else {...}
//...
}
void funkcja(int i) {
if(i < 0) {
// Jak zakończyć działanie funkcji w tym miejscu?
}
else {...}
//...
}

void funkcja(int i)
{
if(i < 0)
{
return;
}
else
{
;
}
}
|
Category |




void Funkcja(int x)
{
[...]
return;
}
AnsiString Funkcja(int x)
{
String result;
[...]
return result;
}
int Funkcja(int x)
{
int result;
[...]
return result;
}
BOOL funkcja(int x)
{
bool result;
[...]
return result;
}
void funkcja(void) {
return;
}

Miroo_007 napisał(a):W książce Symfonia C++ pisze wyraźnie, że funkcja, która nic nie zwraca nie może mieć instrukcji return. No ale to wydanie jest z roku 1999...


Miroo_007 napisał(a):Tom I, str. 80. Wydanie z roku 1999.
Symfonia c++ str. 80, fragment napisał(a):...
Skoro więc takie wywołanie jest wyrażeniem mającym jakoś wartość, to można go użyć w innych większych wyrażeniach. Przykładowo
7 + 1.5 + potega(2,2) + 100
odpowiada u nas wyrażeniu
7 + 1.5 + 4 + 100
Jeżeli funkcja jest zadeklarowana jako zwracająca typ void – czyli nie zwracająca niczego – a my, przez nieuwagę, użyjemy ją w takim wyrażeniu, to kompilator ostrzeże nas, że popełniliśmy błąd. To jedna z wielu zalet obowiązkowych deklaracji funkcji. Także, gdybyśmy wewnątrz definicji takiej funkcji obok słowa return postawili coś oprócz średnika
return 6; // błąd, gdy f-cja zwraca void
to kompilator wykryje błąd. Mieliśmy bowiem nic nie zwracać, a zwracamy ? Także odwrotnie: jeżeli zadeklarowaliśmy, że funkcja ma coś zwracać, a przy słowie return stoi sam średnik, kompilator uzna to za nasz błąd. Obiecywałeś, że coś tu będzie, a nie ma ? Pewnie o czymś zapomniałeś!

Dodam jeszcze, że jest przecież inne rozwiązanie tej sytuacji. Za pomocą instrukcji throw.


void funkcja(void) {
return;
}void __fastcall TForm1::Button1Click(TObject *Sender)
{
funkcja();
}
//---------------------------------------------------------------
void funkcja(void)
{
return;
}
void funkcja(void)
{
return;
}
//---------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
funkcja();
}
private:
public:
void funkcja(void);
/* zwracam uwagę na TForm1:: - nazwa klasy formularza, jeżeli klasa formularza nosi nazwę TMainForm to wpisujesz odpowiednio TMainForm:: */
void TForm1::funkcja(void)
{
return;
}

Powrót do Ogólne problemy z programowaniem
Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 4 gości