Advertisement

C++问题——显式构造函数、常量引用返回值、深浅拷贝

阅读量:

explicit构造函数

所有单参数构造函数必须显式定义以便防止隐式的类型转换。如果不,则遵循较宽松规则时,在无需显式进行类型转换的情况下仍可执行此类操作。

复制代码
    A a;
    a = 37;
    
    AI写代码cpp

该代码构建了一个A类的对象a,并进行了赋值操作。
因此,在赋值操作中,在右侧并非另一个A类的对象。
然而,C++允许单参数构造函数实现了隐式的类型转换.
在本例中,编译器将a=37;尝试转化为temp(37); a=temp;的形式.
同时,临时对象也可通过单一参数构造函数来创建.
使用explicit意味着单一参数构造函数无法生成显式的临时对像.

参数传递小结

  1. 在处理小对象时使用按值调用
  2. 在处理大对象时采用按常量引用调用
  3. 引址调用在处理可变的对象时使用

按常量引用返回

如果函数返回的对象是类类型的实例,则使用按const引用的方式可以避免分配新实例带来的复制开销。
这里的const指的是被引用对象本身无法被修改。
这意昧着你想通过引用的方式将对象传递给调用者时,默认情况下该对象被视为this(即被this所包含的部分)。在这种情况下,默认的方法应该选择性地提供基于const或值的引用。
因此,在这种情况下,默认的方法应被选择性地采用基于const或值的方式

全部评论 (0)

还没有任何评论哟~