Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 193 194 [195] 196 197 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#2911
,
|
|
|
|
А через двоеточие что пишете? Не конструктор предка? |
|
Сообщ.
#2912
,
|
|
|
|
|
Сообщ.
#2913
,
|
|
|
|
Цитата Romkin @ А через двоеточие что пишете? Не конструктор предка? Когда? Ты это наверное имеешь ввиду?: ![]() ![]() class Base { public: Base() : a(10), b(20), c(30) { } int a; int b; int c; }; class Derived: public Base { }; int main(int argc, _TCHAR* argv[]) { Derived d; std::cout << d.a << std::endl; std::cout << d.b << std::endl; std::cout << d.c << std::endl; return 0; } Или про конструктор какого предка ты говорил? |
|
Сообщ.
#2914
,
|
|
|
|
Цитата Romkin @ И? В списке инициализации конструктора можно перечислять в произвольном порядке, на порядок инициализации это никак не влияет. А через двоеточие что пишете? Не конструктор предка? |
|
Сообщ.
#2915
,
|
|
|
|
Нет. Причём тут кривизна ? Цитата D_KEY @ Так что "проблем" оно тебе и не создаст - ибо авторы языка сделали так, что и не потребуется тебе сталкиваться с такими проблемами А вот авторы С++ не сделали так, чтобы не приходилось сталкиваться с проблемами Дженерики же может и умеют меньше, но зато делают это нормально (это к вопросу об обобщённом коде, который не напишешь). |
|
Сообщ.
#2916
,
|
|
|
|
Цитата IL_Agent @ А вот авторы С++ не сделали так, чтобы не приходилось сталкиваться с проблемами Дженерики же может и умеют меньше, но зато делают это нормально. С какими проблемами? С проблемами, что программист мало кушает каши, и не дожимает пару символов на клаве? А это разве проблема авторов С++ ? |
|
Сообщ.
#2917
,
|
|
|
|
Цитата KILLER @ С проблемами, что программист мало кушает каши, и не дожимает пару символов на клаве? Ну да, например. Цитата KILLER @ это разве проблема авторов С++ ? Не знаю. Ты создал не очень удобный инструмент. Ты считаешь своей проблемой, что он не очень удобный ? |
|
Сообщ.
#2918
,
|
|
|
|
Цитата IL_Agent @ Не знаю. Ты создал не очень удобный инструмент. Ты считаешь своей проблемой, что он не очень удобный ? Почему не очень удобный? Для меня очень даже удобно... Или где критерий удобства? Почему для тебя любая логическая ошибка - это удобство, а эта логическая ошибка для тебя не удобство? |
|
Сообщ.
#2919
,
|
|
|
|
Цитата IL_Agent @ Не знаю. Ты создал не очень удобный инструмент. Ты считаешь своей проблемой, что он не очень удобный ? ![]() Вот ты мне скажи. Представим код на шарпе: ![]() ![]() public void Foo(String str) { str = "abcdef"; } public void Bar() { str = "cdefgh"; Foo(str); }; Должно ли str, продекларированная в методе Bar измениться после вызова метода Foo? И если да, то почему? |
|
Сообщ.
#2920
,
|
|
|
|
Цитата Flex Ferrum @ Должно ли str, продекларированная в методе Bar измениться после вызова метода Foo? И если да, то почему? Нет |
|
Сообщ.
#2921
,
|
|
|
|
Цитата IL_Agent @ Нет ![]() Почему? А так: ![]() ![]() class FooClass { public void ModifyMe() { /* preform some modifications */;} }; class BarClass { public void Foo(FooClass foo) { foo->ModifyMe(); } public void Bar() { FooClass foo; Foo(foo); } } foo в методе Bar измениться после вызова Foo? Если да/нет, то почему? |
|
Сообщ.
#2922
,
|
|
|
|
Цитата Flex Ferrum @ Почему? Но я же не ответил "да" ![]() Объект "cdefgh" мы не трогали. В foo мы создали новый объект "abcdef" и присвоили его переменной str из foo. Переменную str из Bar мы так же не трогали. И почему он должен меняться ? Цитата Flex Ferrum @ foo в методе Bar измениться после вызова Foo? Если да/нет, то почему? А здесь другая картина. В Foo вызывается метод, который меняет переданный объект. Вот передаю я тебе объект "кружка пива", ты вызываешь метод "выпить". У меня должна остаться полная кружка пива ? ![]() Но это С++. Семантика значений. Тут, когда я передаю кружку, по умолчанию наливается новая |
|
Сообщ.
#2923
,
|
|
|
|
Цитата IL_Agent @ Но это С++. Семантика значений. Тут, когда я передаю кружку, по умолчанию наливается новая ![]() Почему же? Речь шла о шарповом коде. Или по синтаксису не понятно? Добавлено Цитата IL_Agent @ А здесь другая картина. Как-то не очень понятно. В одном случае так, в другом - сяк. Где логика? Как я могу сходу понять - объект, принимаемый функцией, обладает value- или ref-семантикой? Не видя объявления этого объекта? |
|
Сообщ.
#2924
,
|
|
|
|
Цитата IL_Agent @ А здесь другая картина. В Foo вызывается метод, который меняет переданный объект. Вот передаю я тебе объект "кружка пива", ты вызываешь метод "выпить". У меня должна остаться полная кружка пива ? Ага, а ты почему не упомянул об этом? Цитата IL_Agent @ Объект "cdefgh" мы не трогали. В foo мы создали новый объект "abcdef" и присвоили его переменной str из foo. Переменную str из Bar мы так же не трогали. И почему он должен меняться ? |
|
Сообщ.
#2925
,
|
|
|
|
Цитата Flex Ferrum @ Почему же? Речь шла о шарповом коде. Или по синтаксису не понятно? ![]() ![]() foo->ModifyMe(); Если это опечатка и ты имел в виду шарп, то да, изменится, потому что...[далее тот же текст]. |