c++ - 什么时候需要默认构造函数?
问题描述
class Test
{
private :
int i;
public:
Test(int m)
{
i = m;
}
void restart(int k)
{
Test(k);
}
};
但是,编译器 (VS17) 向我发送了一条错误消息,说“Test 类不存在默认构造函数”,但我认为我不需要默认构造函数,因为此类中的所有函数都需要一个 int 类型参数。
解决方案
在
class Test {
// ...
void restart(int k)
{
Test(k);
}
};
该语句声明了一个名为Test(k);
的变量。通过调用不存在的默认构造函数来初始化此变量。Test
k
k
我认为我不需要默认构造函数,因为此类中的所有函数都需要 int 类型参数。
这既不是支持也不是反对class
拥有/需要默认构造函数的理由。
如果您想要设置Test::i
inside的值,Test::reset()
那么就这样做:
class Test
{
private:
int i;
public:
Test(int m) : i{ m } // you should use initializer lists instead of
{} // assignments in the constructors body.
void restart(int k) { i = k; }
};
推荐阅读
- amazon-web-services - 在 aws-sam 环境变量中添加字典
- php - L8 - HTTP 并发请求 - 混淆动态构建关闭
- php - 按用户角色和订单历史记录在 WooCommerce 中设置最低订单金额
- scala - 具有分组查询的 Scala 光滑连接表
- java - arraycopy:元素类型不匹配:无法将 java.lang.Object[] 转换为 java.lang.reflect.Array
- bash - Bash 中的虚假值是什么?
- java - 无法将自定义身份验证器添加到 Keycloak
- php - 我有一个数据库,每篇文章有很多图片,我想为每篇文章获取一张图片,并且只出现一篇文章的图片
- javascript - html 发送 GET 方法 带有授权不记名令牌的主页请求并在窗口中显示 xmlhttprequest.response(即主页)
- pine-script - Pine Script - 隐藏输入