переменные класса

pav7

что нужно написать, чтобы в классе была переменная, в которую можно записывать в функциях класса, но вне его эта переменная была только для чтения?
пример:


class ClassA
{
int a;
int change_a;
};
int ClassA::change_a
{
a=10;
return a;
}
void some_function
{
ClassA my_a;
my_a.a=10; - это не должно работать.
int b=my_a.a - а это должно.
}

guestperm

sdelay get_a

Anturag

class ClassA{
private:
int a;
public:
ClassA { a=10; };
int get { return a;};
};
void some_function{
ClassA my_a;
my_a.a=10; // это не должно работать.
int b=my_a.get; // - а это должно.
};
если я правильно тебя понял.

pav7

почти правильно:
у меня переменные - указатели на массивы, которые в моей проге используются очень часто и вопрос скорости работы - для меня первоочередной. Если сделать функцию, которая будет из массива вытягивать элементы - это безусловно решение, но при этом будут тратиться лишние такты, нежели если использовать этот массив напрямую. За однократное выполнение проги число обращений к массиву - порядка 10^9. Конечно, можно не морочить себе голову и считать, что в этот массив никто не будет писать. то, что я хочу сделать - это типа защиты от дураков (ну или от самого себя ).
У меня просто книжки по c++ под рукой нет. И кстати я не помню, как изменяется доступ к переменным, если их объявлять в классе после protected ?

abrek

> Если сделать функцию, которая будет из массива вытягивать элементы - это безусловно решение, но при этом будут тратиться лишние такты,
> нежели если использовать этот массив напрямую.
Если функция определена в заголовочном файле, то нормальный компилятор должен сгенерировать одинаковый код.

1234554321

на что будут тратиться такты? (предложенный тебе вариант подразумевает инлайн-подстановку )
protected, пока нет наследования, ничего нового не привносит

pav7

ааа, бля, все, я еще раз прочитал, что мне написали.
все, всем большое спасибо.

Ivan8209

Забей.
Правильный компилятор должен соптимизировать.
А неправильный должен быть пропатчен соответствующим образом.
---
...Я работаю антинаучным аферистом...

pav7

я надеюсь, что компилятор в vs.net нормальный?

Chupa

> у меня переменные - указатели на массивы
const type* get_a

Ivan8209

Учитывая ".net" --- нет.
По крайней мере, весьма сомнительно.
---
...Я работаю...

1234554321

да.

Ivan8209

А что ".net" перестала накладывать ограничения на среду?
А как же CRL? Или как он там называется-то?
---
...Я работаю...

1234554321

Давай так. Компилятор С++ в VS6 в твоём понимании нормальный?

1234554321

const_cast уже отменили?

Ivan8209

Судя по сравнению производительности кода, далеко не самый лучший. Хотя возможно, что и встроит эти вызовы.
---
...Я работаю...

1234554321

эти - встроит.
>по сравнению производительности кода, далеко не самый лучший.
хм... с чем сравниваем?

natali20

>const_cast уже отменили?
const_cast - для уебанов
при желании можно ещё кучей способов доступ к этой памяти получить, и что с того?

Ivan8209

Поясню. Вроде бы автор хочет добиться производительности?
---
...Я работаю...

1234554321

для уебанов - reinterpret_cast

1234554321

автор хочет не потерять в производительности из-за добавления указанной "фичи". это ведь несколько другое, правда?

Ivan8209

По крайней мере, когда я последний раз смотрел обзор (весной лучший выход был у интелевского.
По-моему, даже заметно лучше, но не уверен.
---
...Я работаю...

1234554321

ха. а для амд-ных процев разница есть? в которую сторону?
в целом, плюсовский компилятор в студии плохим назвать очень сложно.

pav7

для уебанов - reinterpret_cast

я юзал reinterpret_cast, когда ботал com и писал компоненты... УЖАС, я уебан

Ivan8209

На этом не проиграет, может проиграть на другом.
Сравнительно с доступными возможностями.
(Я подозреваю, что человек либо не требует лицензионной чистоты, либо может её себе позволить.)
---
...Я работаю...

Ivan8209

Хинт: есть лучше. ; )
Для АМД не помню. Надо смотреть.
Там ещё и гнусь есть.
---
...Я работаю...

natali20

>для уебанов - reinterpret_cast
не соглашусь
reinterpret_cast иногда бывает действительно нужен для некоторых (низкоуровневых) вещей
const_cast свидетельствует о (серьёзных) проблемах дизайна

1234554321

отлично. можешь читать мой вопрос как "реинтерпрет каст уже отменили?"
P.S. вообще, по твоим постам очень похоже, что о программах, пишущихся несколькими людьми, у тебя представления чисто теоретические

1234554321

по всем параметрам? то есть такой, который скомпилирует всё то же, что и МС-кий с не меньшей производительностью?
Хинт: это риторический вопрос.

natali20

>отлично. можешь читать мой вопрос как "реинтерпрет каст уже отменили?"
применение в такой ситуации реинтерпрет-каста - уебанство
однако, отсюда никак не следует утверждение "субж - для уебанов"
>P.S. вообще, по твоим постам очень похоже, что о программах, пишущихся несколькими людьми, у тебя представления очень смутные
Гы-гы. Несомненно, такой нереальный отец как ты, способен как-то аргументировать свои слова?

Ivan8209

Хинт: там ещё всякая гнусь мешается. ; )
---
...Я работаю...

1234554321

вообще - да. конкретно тебе - нет. бисер, свиньи, все дела...

natali20

Понятно. В очередной раз расписался в собственной некомпетентности. Впрочем, я другого и не ожидал.
Оставить комментарий
Имя или ник:
Комментарий: