- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
考虑:
class B
{
public:
int i = 4;
}
class A
{
public:
B b;
this()
{
b = new B;
}
ref B f()
{
return b;
}
}
成员函数f
前面的ref存储类是多余的吧?类对象总是通过引用传递,所以返回B
和ref B
是等价的吗?
第二:纯
成员函数?纯函数是只返回依赖于参数的东西。因此,它不应该依赖于类的任何数据成员,因为即使传入相同的参数,它们也可能改变函数的输出。因此,pure
成员函数也是 static
成员函数? (反之亦然)
第三:const和不可变成员类有什么区别?区分不可变和常量类对象的成员函数调用?从语义上讲,我们不能同时更改具有这两个属性的数据成员,对吧?
第四:我应该添加尽可能多的函数属性吗?像 pure
、const
或 immutable
、nothrow
和 final
?
太棒了,刚刚发现这个作品:
inout(B) f() inout
{
return b;
}
最佳答案
ref B f()
是一个通过引用返回 B 的函数。 B 是类引用。因此,它通过引用返回一个类引用。这在D中不是废话,因为类引用是可以反弹的:
auto a = new A;
a.f() = new B; // rebinds a.b, possible due to return by ref
同样,你也可以在 D: 中拥有指向类引用的指针:
class A
{
B b;
/* ... */
B* f()
{
return &b;
}
}
auto a = new A;
B* b = a.f(); // pointer to reference to instance of class B
*b = new B; // updates a.b
对于 pure
成员函数,隐式 this
引用参数就是这样 - 另一个参数。它被认为是输入的一部分。使用相同的 this
对象和相同的常规参数,输出仍然始终相同。
使用 const
成员函数,您不知道 this
对象是可变的还是不可变的。它可能是 - const
成员函数 promise 无论如何都不会改变它。使用 immutable
成员函数,this
对象始终是不可变的。 this
引用因此可以作为不可变参数传递给另一个函数,或分配给不可变变量。
在决定何时关心 const
、immutable
、pure
和 nothrow
时,必须考虑是否不是您实际上需要客户端代码中的这些各种保证。如果您正在编写一个通用库,您可能不知道这一点,因此在这些情况下,最好提供尽可能多的保证。
final
的情况可以说是不同的。当您不希望客户端代码意外覆盖一个没有意义的函数或不打算被覆盖的函数时,或者当您希望为编译器提供更多机会来优化对该函数的调用时,请使用它。不覆盖任何函数(使用override
)且不实现任何接口(interface)函数的最终函数不必是虚函数,从而减少调用开销。
关于class - D 成员函数属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8635396/
我只想知道它们之间的区别: .class .class{ font-size:14px; } 对比: .class > .class{ font-size:14px; } 是一样的东西吗? 最佳答案
PrimeFaces 文档的以下摘录使标题中描述的两个选择器之间似乎存在差异: .ui-widget, .ui-widget .ui-widget { font-size: 90% !imp
我正在尝试选择特定值。但我遇到了一个问题。 我有两个元素,一个有 X Y,另一个有 X Y Z。 当选择 X Y Z 时,我也收到 X Y 的值...有没有办法让它寻找 X AND Y AND Z 而
.class.class 和 .class .class 有什么区别? 最佳答案 .class .class 匹配类 .class 的任何元素,这些元素是类 .class< 的另一个元素的后代/. .
我正在研究 Classname.class 和 Classname.class.toString() 并发现了一些不寻常的东西。 .class 在同一个类上运行时似乎等同于 .class。尽管 .cl
我试图在Dart中扩展列表并在此列表中使用另一个类。 这是我的示例,其中注释出了问题: import "Radio.dart"; // extends ListBase { List ra
我有一个很大的“经理”类,我认为它做得太多了,但我不确定如何将它划分为更多逻辑单元。 一般来说类主要由以下方法组成: class FooBarManager{ GetFooEntities();
我在一个文件中定义了一个抽象父类(super class),在另一个文件中定义了一个子类。我需要父类(super class)文件和堆栈跟踪报告来找到一个包含它。 但是,当它到达“extends”行时
我在 A. Alexenderscu 的现代 C++ 设计中找到了一些模板示例 作者使用以下行的地方 template class CheckingPolicy // class SmartPt
看一下这段代码: public static class A { public void doA() { } } public static class B extends A {
我有两个具有 .body 类的 div,但是,一个位于另一个具有 .box 类的 div 中 - 如下所示: 我只想为 .box 内部的 .body 设置样式...但我在下面所
我一定是遗漏了 C++ 规范中的某些内容,因为我无法解释为什么以下代码可以成功编译: class MyClass { static void fun(); }; int main() { MyClas
我正在尝试在 python 中“模拟”命名空间。我使用内部和外部类层次结构来创建我的命名空间。例如,您希望将文件(如资源)的路径保存在一个位置。我试过这样的事情: src = #path to sou
在试验 online crystal compiler 时(这太棒了),我遇到了一个我似乎无法找到解释的错误: class Person class Current < self end
在查看我的一段代码时,我陷入了如下的一条语句。 TMyObjectClass = TMyObject 类; 我有点困惑,不知道这句话是什么意思。由于 TMyObjectClass 在该语句上方没有声明
我正在编写一个简单的应用程序,以学习一些基本的Dart编程,但无法弄清楚其结构和包含的内容-我得到了一个重复的类Point 首先,我有一个叫做MouseTrack的主类。它将初始化列表并产生循环。 #
在 org.springframework.core.SerializableTypeWrapper (版本 5.2.3),第 112 行有以下代码: if (GraalDetector.in
我希望将鼠标悬停在子导航中的列表项上,以激活页面上该类别中所有项的类(不仅仅是父元素或同级元素)。有任何想法吗?这是我的意思的一个例子: img.BLUE {border:1px solid #FF
我正在通过 ClassLoader 加载类: Class clazz = urlClassLoader.loadClass(name.substring(0, name.length() - 6).r
以下简化的类在从 get() 返回值时执行不同的操作,具体取决于该类是被赋予 double 值还是数组作为模板参数: #include "array" #include "type_traits" t
我是一名优秀的程序员,十分优秀!