gpt4 book ai didi

c++ - 为什么构造函数使用错误的参数?

转载 作者:行者123 更新时间:2023-11-30 01:06:18 25 4
gpt4 key购买 nike

我有一个构造函数

T(someClass<double> o);

someClass 类由double* x 初始化。也就是

someClass<double>(double * X);

为什么下面的方法有效?

double * X=new X[10];
T obj(X);

为什么这行得通,即使 T 没有构造函数,它将 double * 作为参数(它应该得到 someClass 的实例)?编译器是否从 double* 隐式初始化 someClass?

最佳答案

someClass<double>(double * X);可以看作是converting constructor , 这可以转换 double*someClass<double>含蓄地。

对于 T obj(X); ,编译器将检查 T 的所有可能的构造函数 build obj ;并可能找到一种隐式转换 X 的可能方法至 someClass<double>然后将其用作 T(someClass<double> o) 的参数.

您可以通过构造函数来禁止意外的隐式转换 explicit .

关于c++ - 为什么构造函数使用错误的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46519824/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com