2013-08-12 2 views
1

Что означает следующий синтаксис C++?Это наследование функций или что-то еще?

my_s_module::my_s_module(mylib::cont const& c) 
    :mylib::s_module{c} 
{ 
    // Some content; 
} 

Это похоже на наследство для меня. Но я знаю, что для наследования синтаксис является следующим:

class Child: public Parent 
{ 
} 

И в первом примере мы имеем что-то вроде этого:

Child(some_type const& x): public Parent{x} 
{ 
} 

Так что, я не знаю, что это значит. Может ли кто-нибудь объяснить мне этот синтаксис?

ДОБАВЛЕНО

Я, вероятно, нужно добавить, что в комментариях к этому коду написано, что это «конструктор модуля». Но что это значит? Я знаю, что означает конструктор класса, но что такое конструктор модуля?

+2

Если это не MYLIB :: s_module? –

+0

Где это? Возможно ли, что это простая опечатка? –

+0

Можете ли вы разместить реальный код? – billz

ответ

0

Это конструктор класса my_s_module, определенный вне определения класса. Этот конструктор инициализирует член s_module вложенного класса mylib до c, который является аргументом конструктора.

0

Это обычный список инициализации в конструкторе класса my_s_module, который наследуется от s_module, который находится в пространстве имен (или класса) mylib.

Код должен выглядеть примерно так:

namespace mylib 
{ 
    class cont 
    { 
     // ... 
    }; 

    class s_module 
    { 
    public: 
     s_module(cont const&); 
     // ... 
    }; 
} 

class my_s_module : public mylib::s_module 
{ 
public: 
    my_s_module(mylib::cont const &); 
}; 

// Constructor implementation 
my_s_module::my_s_module(mylib::cont const& c) 
    : mylib::s_module{c} // Initialize the base class. The {} around the argument is a C++11 feature. 
{ 
    // Some content; 
} 
Смежные вопросы