- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在代码中我看到了以下结构:
const class_name obj_name{func()};
func() 返回名为class_name
的类的对象。所以,我想知道为什么不使用以下结构:
const class_name obj_name = func();
最佳答案
const class_name obj_name{func()};
作者通过写上面的代码,试图遵循统一初始化语法(C++11引入),从而避免繁琐的解析和最令人烦恼的解析,即使是经验丰富的程序员也会意外陷入其中。他正试图将最佳实践灌输到他的大脑中,这样他就不会偶尔陷入上述解析问题,如下所述。
考虑一下,
struct X { /*....*/ }; // some class
struct Y
{
Y();
Y(int i);
Y(X x);
};
现在可以这样写了:
Y y(100); // declare an object y of type Y
调用第二个构造函数,这很好。到目前为止,一切顺利!
但不小心有人甚至写了这个:
Y y();
(错误地)认为它调用了默认构造函数。但事实是它不调用默认构造函数。相反,它声明了一个函数 y
,它不接受任何参数,并返回 Y
。这在 C++ 中称为 vexing parse。
同样,可以(不小心)这样写,
Y y(X());
认为它调用第三个构造函数传递动态创建的 X
类型的对象。同样,这是错误的。相反,它声明了一个函数 y
,它接受一个函数指针(函数类型不接受任何东西并返回 X
)并返回 Y
。它被称为 C++ 中最令人烦恼的解析。
所以统一的初始化语法避免了所有这些问题,你可以这样写:
Y y1{}; // invokes 1st constructor
Y y2{100}; // invokes 2nd constructor
Y y3{X{}}; // invokes 3rd constructor
并遵循相同的语法,
Y { function_call() };
const class_name obj_name { func() }; // taken from your question!
这是统一的,当然是最佳实践,不是吗?
希望对您有所帮助。
关于c++ - 什么时候用 "class_name obj_name = func()"替换 "class_name obj_name{func()}"有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15759546/
在查看 jQuery 示例时,我看到 CSS 类在引用时带有前缀“.”。有时和其他时候没有。例如,在 codecademy 的这段代码中: else if(event.which === 110) {
当我尝试根据字典(“cmdList”)中定义的依赖关系创建依赖关系(子任务)时出现上述错误。例如,“BDX010”是“BDX020”的依赖关系。我正在使用Python 3.7。 请查看底部的堆栈跟踪以
这个问题在这里已经有了答案: nth-child doesn't respond to class [duplicate] (3 个答案) Can I combine :nth-child() o
在代码中我看到了以下结构: const class_name obj_name{func()}; func() 返回名为class_name 的类的对象。所以,我想知道为什么不使用以下结构: cons
我有一个看起来像这样的 Book 模型: class Book { where(author: true) }, class_name: 'User', touch: true belongs_
我正在开发一个学校注册系统,学生可以在其中添加和删除类(class)以进行更多 php 练习 例如,一名学生在他/她的类(class)表中添加了 2 门会计 101 类(class),这是不应该发生的
我正在积极学习如何在 python 中实现决策树。 从 scikit-learn 重新创建 Iris 分类示例时,我得到一个存在于 export_graphviz 中的参数的 TypeError ,即
这个问题在这里已经有了答案: What is the difference between Class.this and this in Java (4 个答案) 关闭 9 年前。 我看到一些代码使
三、元素定位方式 1-通过id定位,By.ID id属性在HTML中是唯一的,因此使用id定位可以确保找到页面上唯一的元素。 由于id是唯一的,浏览器在查找元素时可以快速定位到目标元素,提高了定
干草开发人员, 当我调用@chapter.articles 时,rails 会产生以下错误: uninitialized constant Sommaire::Chapter::Article 事件如
我正在处理一个相当简单的 has_many through: 情况,我可以使 class_name/foreign_key 参数在一个方向上工作,但不能在另一个方向上工作。也许你能帮帮我。 (附注:我
我最近遇到了这段代码。用户有很多答案。 :class_name 和 :foreign_key 的目的是什么? class Answer 'Question", :foreign_key => 'qu
在我的新 Rails 项目中,我需要访问我的旧数据库。所以我创建了一些遗留模型。我在照片和评论之间有一个多态关联(commentable_id 和 commentable_type) 当我打电话 Le
我最近遇到了这段代码。用户有很多答案。 :class_name 和 :foreign_key 的目的是什么? class Answer 'Question", :foreign_key => 'qu
我在我的代码中使用 mysql_fetch_object 时出现错误,因为我试图创建其实例的对象具有构造函数。 错误如下:Warning: Missing argument 1 for Ratio::
从项目 15,我注意到这些代码: class FontHandle { ... }; class Font { public: // implicit conversion function
我正在尝试解析一个网站,对其进行标记并将不同的句子存储在一个数组中,因此这变成了一个字符串数组。我需要访问从 json 返回的类。例如,我必须上课:nhate和hate。如果该类别令人讨厌并且该类别的
class A < ActiveRecord::Base has_one :b, class_name: "Something::B" end module Something class B
我正在通过 2 个模型之间的关系使用一个简单的 has_many。 Achievement 模型通过 ConqueredAchievement 表描述了 Professional::Company 可
使用以下代码: classes = ['ham', 'spam'] dot_data = StringIO() with open("./plots/ritesh.dot", "w") as f:
我是一名优秀的程序员,十分优秀!