PDA

Tam Sürümünü Görmek İçin : parametre "const" mu? degil mi? (c++)


calavera
08/05/2006, 11:56
Bir fonksiyona gecilen parametrenin const olup olmadigini calisma zamaninda anlayabilr miyiz? nasil olabilir? Mesela:

myfunc(arg char*) // diye bi fonksiyonum olsun
{
if((arg != NULL) && <?arguman const degilse?>)
{
delete [] arg;
}
}

main()
{
...
// kodun icinde biyerlerde:

myfunc("const parametrem");

// veya

char* pparam = new [256];
strcpy(pparam,"Dinamik parametre")
myfunc(pparam);

//cagirabilirim
...
}

fonksiyonu cagirdigim zaman eger parametre dinamik dizi ise, delete [] ile bunu serbest biraksin. const ise bisey yapmasin.


serimc
08/05/2006, 16:34
Dostum verdiğin örnekte parametreyi kendin geçiriyosun kodlama aşamasında.Eğer yapmak istediğin bi component hazırlamak ve kullanıcıya geçtiği parametreye göre işlem yaptırmaksa c++ 'ın bize sunduğu en temel özelliklerinden "fonksiyonları aşırı yükleme" sorununa çözümü olacaktır.

calavera
08/05/2006, 17:37
eyvallah dostum, const icin overload olayi aklima gelmemisti hic, denedim meger ayird ediyormus. su sekilde oldu:

int myfunc(const char* arg)
{
return 0;
}

int myfunc(char* arg)
{
if(arg != NULL)
delete [] arg;
return 0;
}

bu sekilde calisti.