Сообщение Re[3]: [plain c] Параметр функции как const и не const при в от 21.04.2015 11:06
Изменено 21.04.2015 11:16 uzhas
Здравствуйте, Alexander G, Вы писали:
AG>Ну так это в данном случае корректный alias
согласен, на эти грабли тут не наступим
хотел обратить внимание на такой вариант: у функции f могут быть неявные предположения как соотносятся входные указатели. то есть могут ли они указывать на одну память или обязаны не иметь пересекающихся участков
const/non const здесь неважен
я сталкивался с такой ситуацией
есть функция double f(double& a, double& b)
если ее вызвать, как
а при вызове
связано это было, по видимому, с тем, что входящие аргументы использовались для манипуляций (то есть использовались, как рабочие переменные) внутри функции
пример:
эта функция возвращает 1, если входные параметры лежат в разных областях памяти. иначе возвращает 2.0
AG>Ну так это в данном случае корректный alias
согласен, на эти грабли тут не наступим
хотел обратить внимание на такой вариант: у функции f могут быть неявные предположения как соотносятся входные указатели. то есть могут ли они указывать на одну память или обязаны не иметь пересекающихся участков
const/non const здесь неважен
я сталкивался с такой ситуацией
есть функция double f(double& a, double& b)
если ее вызвать, как
double a = 0;
double b = 0;
double x = f(a, b); <-- здесь корректное x
а при вызове
double a = 0;
double x = f(a, a); <-- здесь некорректное x
связано это было, по видимому, с тем, что входящие аргументы использовались для манипуляций (то есть использовались, как рабочие переменные) внутри функции
пример:
double Return1And2(double& a, double& b)
{
a = 1.0;
b = 2.0;
return a;
}
эта функция возвращает 1, если входные параметры лежат в разных областях памяти. иначе возвращает 2.0
Re[3]: [plain c] Параметр функции как const и не const при в
Здравствуйте, Alexander G, Вы писали:
AG>Ну так это в данном случае корректный alias
согласен, на эти грабли тут не наступим
имелся в виду aliasing в широком смысле : http://en.wikipedia.org/wiki/Aliasing_(computing)
хотел обратить внимание на такой вариант: у функции f могут быть неявные предположения как соотносятся входные указатели. то есть могут ли они указывать на одну память или обязаны не иметь пересекающихся участков
const/non const здесь неважен
я сталкивался с такой ситуацией
есть функция double f(double& a, double& b)
если ее вызвать, как
а при вызове
связано это было, по видимому, с тем, что входящие аргументы использовались для манипуляций (то есть использовались, как рабочие переменные) внутри функции
пример:
эта функция возвращает 1, если входные параметры лежат в разных областях памяти. иначе возвращает 2.0
AG>Ну так это в данном случае корректный alias
согласен, на эти грабли тут не наступим
имелся в виду aliasing в широком смысле : http://en.wikipedia.org/wiki/Aliasing_(computing)
хотел обратить внимание на такой вариант: у функции f могут быть неявные предположения как соотносятся входные указатели. то есть могут ли они указывать на одну память или обязаны не иметь пересекающихся участков
const/non const здесь неважен
я сталкивался с такой ситуацией
есть функция double f(double& a, double& b)
если ее вызвать, как
double a = 0;
double b = 0;
double x = f(a, b); <-- здесь корректное x
а при вызове
double a = 0;
double x = f(a, a); <-- здесь некорректное x
связано это было, по видимому, с тем, что входящие аргументы использовались для манипуляций (то есть использовались, как рабочие переменные) внутри функции
пример:
double Return1And2(double& a, double& b)
{
a = 1.0;
b = 2.0;
return a;
}
эта функция возвращает 1, если входные параметры лежат в разных областях памяти. иначе возвращает 2.0