#c
#c
Вопрос:
Рассмотрим следующий код
class abc
{
};
class def: public abc
{
};
void main()
{
abc a1;
def a2;
def::abc a3;
}
Что def::abc
здесь подразумевается под; является abc
членом def
?
Являются a3
и a1
похожими?
Комментарии:
1.
def::abc
то же самое, чтоabc
. Это избыточно. Смотрите также: введенное имя класса2. Прочитайте хорошую книгу по программированию на C , затем посмотрите какой-нибудь справочный веб-сайт на C и, возможно, этот проект стандарта C 11
3. Спасибо. Понял. Просто хотел подтвердить это. 👍
4. если вы предпочитаете экспериментировать с rtfm, вы могли бы проверить
std::is_same_v<abc,def::abc>
, чтобы убедиться, что они одинаковы
Ответ №1:
def::abc a3; такой же, как abc a1;. Вы можете проверить порядок создания экземпляра, как показано ниже :
#include <iostream>
class Base {
public:
Base()
{
std::cout << "Basen";
}
};
class Derived: public Base
{
public:
Derived()
{
std::cout << "Derivedn";
}
};
int main()
{
std::cout << "Instantiating Basen";
Base cBase;
std::cout << "Instantiating Derivedn";
Derived cDerived;
std::cout << "Instantiating Derived::Basen";
Derived::Base cBDerived;
return 0;
}
Вывод является :
Instantiating Base Base Instantiating Derived Base Derived Instantiating Derived::Base Base
Комментарии:
1. Рад, что это помогло! Вы также можете отметить ответ полезным 🙂