uniform-initialization相关内容

统一初始化导致 C++ 中的运行时错误

我非常喜欢统一初始化,并且在大多数情况下我想构造初始化变量时都会使用它.最近,我在构造 cv::Mat 类型的变量时遇到了奇怪的错误. cv::Mat lookUpTable( 1, 256, CV_8U );uchar* p = lookUpTable.ptr();for( int i = 0; i (pow(i/255.0, gamma ) * 255.0);} 虽然这个实现效果很好,但如 ..
发布时间:2021-06-12 19:42:38 C/C++开发

为什么C ++列表初始化也要考虑常规构造函数?

在C ++中,当使用initializer_list语法初始化对象时,如果没有其他列表初始化规则适用,则对象的常规构造函数也会参与重载解析.据我了解,以下代码调用X :: X(int) class X {int a_;X(int a):a_(a){});无效foo(){X条{3};} 但是我不明白,为什么在initializer_lists的上下文中还要考虑常规构造函数.我觉得现在很多程序 ..
发布时间:2021-04-19 19:59:21 C/C++开发

可变参数模板的统一初始化

我有一个POD ChParam ,它是可变参数模板函数 set 中的一个参数.我想在花括号 p.set({Param :: D,1000.f},{Param :: p,2000.f})中传递给函数形参(构造函数参数).并且认为构造函数将被隐式调用,并且将创建 ChParam 对象.但这是不可能的,我应该显式创建一个对象 a.set(ChParam {Param :: D,1000.f},ChPar ..
发布时间:2021-04-19 18:56:50 C/C++开发

C ++中的对象初始化语法(T obj = {...} vs T obj {...})

两种初始化形式T obj = {...}和T obj{...}有什么区别? 最初,我认为T obj = {...}是T obj = T{...}的简写,其中将一个临时对象复制到了我们的新对象中.尽管它不执行复制构造函数(复制省略),但需要它的存在和访问权限做到这一点.但是,当我通过使构造函数私有化来阻止对特定类的复制构造函数访问时,没有错误. 这意味着不涉及复制机制.那么'='符号的作用是什么 ..

为什么“ A a {};”删除默认构造函数A :: A()时进行编译?

这里是有问题的代码示例: 结构A { A()= delete; }; int main() { // A a(); //编译,因为它是一个函数声明(最令人讨厌的解析) // A a; //不像预期的那样编译 A a {}; //编译,为什么?默认构造函数被删除。 } 尝试此处与任何可用的编译器一起使用。我尝试了几种,但没有发现编译错误。 解决方案 ..
发布时间:2020-09-27 19:50:08 C/C++开发

为什么gcc警告仅缩小统一初始化的转换范围?

我正在尝试使用long 类型变量转换为 int 类型变量/en.cppreference.com/w/cpp/language/list_initialization“ rel =” nofollow noreferrer“> 统一初始化 ,并且没有它。但是我只有在统一初始化时才收到编译器警告。这是为什么?为什么在两种情况下 gcc 都不发出警告?我也尝试过使用 clang 并获得类似的结果。 ..

Object obj(args ...)和Object obj {args ...}`有什么区别?

草稿书有效的C ++ 11 Scott Meyers指出: 在创建对象时区分()和{} Object obj(args...)和Object obj{args...}有什么区别?以及斯科特为什么这么说. 更新: 问题如何使用C ++ 11统一初始化语法?询问操作方法,而这个问题询问原因. Update2: 我发现以下链接是有帮助的,并完全回答了这个问题: ..
发布时间:2020-05-20 01:07:42 C/C++开发