Здравствуйте, jazzer, Вы писали:
J>Здравствуйте, Ignoramus, Вы писали:
I>>Кроме того, наверное нельзя будет присвоить
I>>I>> A a();
I>> const B b = a.get_b(); // ok
I>> B bb = a.get_b(); // compiler error!
I>>
I>>Правильно я понял?
J>Нет. На присваивание это не действует (а то, что ты написал — это вообще инициализация, а не присваивание).
J>запретить только можно будет инициализацию некостантных ссылок в стиле B& bb = a.get_b();
сорри, в данном примере я ошибся, я имел в виду конечно const B& b и B& bb.
Но если бы я объявил A::get_b как B get_b(), то тогда с помощью const также можно запретить инициализацию и самого объекта, правильно?
Кроме того если пример B bb = a.get_b(); разбить на B bb; bb = a.get_b();, то это тоже компилятор не пропустит, так? Т.е. не только инициализация но и присваивание запрещено? (для const B b понятно может быть только инициализация).