Site Tools


c_args
Передача по значению (с копированием)
void func(arg); // стандартная передача с копированием
void func(int i){
i = 2;
cout << "inFunc: " << i << endl;
}

int main(int argc, char** argv){
int init = 3;
func(init);
cout << "afterFunc: " << init << endl;
}
//Вывод
inFunc: 2
afterFunc: 3

Точно также, копируется и весь объект

class charaster{
public:
    int power;
    int whatPower(){
        return power;
    }
};

void func(charaster obj){
  obj.power = 2;
  cout << "inFunc: " << obj.whatPower() << endl;
}

int main(int argc, char** argv){
    charaster mario;
    mario.power = 3;
    func(mario);
    cout << "afterFunc: " << mario.whatPower() << endl;
    }
//вывод
marioInFunc: 2
marioAfterFunc: 3
Передача ссылки (как и значение, но без копирования)
void func(arg&); // В этом случае, копирования не происходит.
class charaster{
public:
    int power;
    int whatPower(){
        return power;
    }
};

void func(charaster &obj){ //!!!!!!!!
  obj.power = 2;
  cout << "inFunc: " << obj.whatPower() << endl;
}

int main(int argc, char** argv){
    charaster mario;
    mario.power = 3;
    func(mario);
    cout << "afterFunc: " << mario.whatPower() << endl;
    }
//вывод  
marioInFunc: 2
marioAfterFunc: 2
масив масивов в качестве аргумента

первый масив, может не указываться.

void func(int massive[][10]);
void func(int massive[]);
стр.272 Лафоре С++
функция как аргумент
аргументы с атрибутом const
значения по умолчанию
перегрузка функций

4-ре разные функции с одинаковым именем. Вызывается подходящаяя по аргументам вызова.

void func(int);
void func(int, int);
void func(char);
void func(char,char);
переменное число аргументов
You could leave a comment if you were logged in.
c_args.txt · Last modified: 2013/02/26 02:37 by konovalov

Page Tools