C++ c++;结构

C++ c++;结构,c++,C++,最后一条语句说明如何在EyeCandyCharacter类的构造函数中使用健康计算函数对象 我的问题是,EyeCandyCharacter类的构造函数需要一些函数,该函数采用与const GameCharacter&兼容的参数,并返回可转换为int的内容 这是否由struct HealthCalculator中定义的operator()支持/实现?我不太明白这个重载运算符的含义 我这里的另一个问题是,派生类构造函数中的初始化器列表通常只初始化其自身的数据成员(尽管我知道派生类的基部分也是隐式初始

最后一条语句说明如何在
EyeCandyCharacter
类的构造函数中使用健康计算函数对象

我的问题是,
EyeCandyCharacter
类的构造函数需要一些函数,该函数采用与
const GameCharacter&
兼容的参数,并返回可转换为
int
的内容

这是否由
struct HealthCalculator
中定义的
operator()
支持/实现?我不太明白这个重载运算符的含义


我这里的另一个问题是,派生类构造函数中的初始化器列表通常只初始化其自身的数据成员(尽管我知道派生类的基部分也是隐式初始化的)。为什么基类
GameCharacter
会出现在派生类
EyeCandyCharacter
的初始值设定项中?

对于第二个问题:

我这里的另一个问题是,派生类构造函数中的初始化器列表通常只初始化其自身的数据成员(尽管我知道派生类的基部分也是隐式初始化的)为什么基类GameCharacter出现在派生类EyeCandyCharacter的初始值设定项中?

否,如果您的基类没有定义
默认构造函数,而是定义了其他构造函数,则必须调用基类构造函数来初始化基类成员。因为在这种情况下,compile不会为您生成
默认构造函数。换句话说,

派生类的基部分不是总是隐式初始化的


关于第二个问题:

我这里的另一个问题是,派生类构造函数中的初始化器列表通常只初始化其自身的数据成员(尽管我知道派生类的基部分也是隐式初始化的)为什么基类GameCharacter出现在派生类EyeCandyCharacter的初始值设定项中?

否,如果您的基类没有定义
默认构造函数,而是定义了其他构造函数,则必须调用基类构造函数来初始化基类成员。因为在这种情况下,compile不会为您生成
默认构造函数。换句话说,

派生类的基部分不是总是隐式初始化的


在你的第一个问题中:

我的问题是,EyeCandyCharacter类的构造函数需要 采用与常量兼容的参数的函数 GameCharacter&并返回可转换为整数的内容。。。是 此操作由struct中定义的运算符()支持/实现 健康计算器

是的,它是受支持的。你必须知道/记住,
HealthCalculator
是一个健康的计算器。它实现了
操作符()
,以“模拟”调用传统函数的语法。它的
操作符()
接受一个
常量GameCharacter&
并返回一个
int
,它与
EyeCandyCharacter
(以及随后的
GameCharacter
)所需的内容兼容

在你的第二个问题中:

为什么基类游戏角色出现在的初始值设定项中 派生类EyeCandyCharacter

它通过调用
GameCharacter
的构造函数来初始化
EyeCandyCharacter
的基类,该基类是
GameCharacter
。不这样做会使
EyeCandyCharacter
的构造函数调用
GameCharacter
的默认构造函数,该构造函数未定义,因此将导致错误



作为旁注,您现在可以在C++11中直接使用
std::function
,它的功能与
std::tr1::function
大致相同

在你的第一个问题中:

我的问题是,EyeCandyCharacter类的构造函数需要 采用与常量兼容的参数的函数 GameCharacter&并返回可转换为整数的内容。。。是 此操作由struct中定义的运算符()支持/实现 健康计算器

是的,它是受支持的。你必须知道/记住,
HealthCalculator
是一个健康的计算器。它实现了
操作符()
,以“模拟”调用传统函数的语法。它的
操作符()
接受一个
常量GameCharacter&
并返回一个
int
,它与
EyeCandyCharacter
(以及随后的
GameCharacter
)所需的内容兼容

在你的第二个问题中:

为什么基类游戏角色出现在的初始值设定项中 派生类EyeCandyCharacter

它通过调用
GameCharacter
的构造函数来初始化
EyeCandyCharacter
的基类,该基类是
GameCharacter
。不这样做会使
EyeCandyCharacter
的构造函数调用
GameCharacter
的默认构造函数,该构造函数未定义,因此将导致