Этот вопрос пытается собрать несколько жемчужин среди десятков плохих книг на С ++, которые публикуются каждый год.
В отличие от многих других языков программирования, которые часто подбираются из учебников, найденных в Интернете, немногие могут быстро забрать C ++, не изучая
...Я знаю, что ссылки являются синтаксическим сахаром, поэтому код легче читать и писать.
Но в чем различия?
Резюме из ответов и ссылок ниже:
Что означает ключевое слово explicit
в C ++?
Мне сказали, что писать using namespace std
в коде неправильно, и что вместо этого я должен использовать std::cout
и std::cin
напрямую.
Почему using namespace std
считается плохой практикой? Это неэффективно или существует риск объявления неоднозначных переменных (переменных, которые имеют то
Что это за идиома и когда ее следует использовать? Какие проблемы это решает? Меняется ли идиома при использовании C ++ 11?
Хотя это было упомянуто во многих местах, у нас не было единственного «что это» вопрос и ответ, так что
...Что такое умный указатель и когда его следует использовать?
Цитата из Стандартная библиотека C ++: учебное пособие и справочник :
Единственный переносимый способ использования шаблонов на данный момент - это реализовать их в заголовочных файлах с помощью встроенных функций.
Почему это?
(Уточнение: заголовочные файлы - это не только портативное
...Я только что закончил слушать интервью подкаста радиоинженерии по программному обеспечению со Скоттом Мейерсом относительно C ++ 0x . Большинство новых функций имело смысл для меня, и сейчас я на самом деле рад C ++ 0x, за исключением одного. Я
...В C ++ 03 выражением является либо значение , либо значение .
В C ++ 11 выражение может быть:
Две категории стали пятью категориями.
В шаблонах, где и почему я должен поставить typename
и template
на зависимые имена? Что именно являются зависимыми именами в любом случае? У меня есть следующий код:
template // Tail will be a UnionNode too.
struct UnionNode : public Tail
... В чем разница между наследованием public
, private
и protected
в C ++? Все вопросы, которые я нашел на SO, касаются конкретных случаев.
В C ++ принято называть переменные-члены с каким-то префиксом, обозначающим тот факт, что они являются переменными-членами, а не локальными переменными или параметрами. Если вы пришли из MFC, вы, вероятно, будете использовать m_foo
. Я также иногда видел myFoo
.
C
...Я встречал этот термин POD-тип несколько раз. Что это значит?
Когда спрашивают о распространенном неопределенном поведении в C , души более просветлены, чем я, ссылаясь на правило строгого наложения имен.
О чем они говорят?
Во многих макросах C / C ++ я вижу код макроса, заключенный в то, что кажется бессмысленным циклом do while
. Вот примеры.
#define FOO(X) do { f(X); g(X); } while (0)
#define FOO(X) if (1) { f(X); g(X); }
... Я не могу понять различия между std::string
и std::wstring
. Я знаю, что wstring
поддерживает широкие символы, такие как символы Юникода. У меня есть следующие вопросы:
std::wstring
вместо std::string
?std::string
содержать весь наборЯ ищу подробную информацию о размере основных типов C ++. Я знаю, что это зависит от архитектуры (16 бит, 32 бита, 64 бита) и компилятора.
Но есть ли стандарты для C ++?
Я использую Visual Studio 2008 на 32-разрядной архитектуре.
...Кто-то упомянул об этом в IRC, но у Google нет хорошего ответа.
Что означает const
в таких объявлениях? const
смущает меня.
class foobar
{
public:
operator int () const;
const char* foo() const;
};