所以当我遇到这个时,我只是在浏览库的源代码.
Font::Font(const sf::Font& font) :
m_font{std::make_shared<sf::Font>(font)}
{
}
Run Code Online (Sandbox Code Playgroud)
我不懂语法
m_font{..}
Run Code Online (Sandbox Code Playgroud)
它是什么?它有什么作用.如果这是一个非常愚蠢的问题,我很抱歉.我不知道谷歌是什么,所以问这里.
小智 19
这是在cppreference上描述的,但是有点难以阅读:
任何构造函数的函数定义的主体,在复合语句的左括号之前,可以包括成员初始化列表,其语法是冒号字符
:,后跟逗号分隔的一个或多个成员初始化列表,每个它具有以下语法...
class-or-identifier brace-init-list(2)(自C++ 11开始)
...
2)使用list-initialization初始化由class-or-identifier命名的基数或成员(如果列表为空则变为值初始化,初始化聚合时进行聚合初始化)
这试图说是X::X(...) : some_member{some_expressions} { ... }导致some_member类成员初始化some_expressions.特定
struct X {
Y y;
X() : y{3} {}
};
Run Code Online (Sandbox Code Playgroud)
数据成员的y初始化方式Y y{3};与初始化局部变量的方式完全相同.
在您的情况下,std::make_shared<sf::Font>(font)生成将用于初始化m_font类成员的值.
该类Font有一个名为m_fonttype 的成员std::shared_ptr<sf::Font>,因此在该类的构造函数中,Font该成员正在使用共享指针进行初始化font.