C++问题——显式构造函数、常量引用返回值、深浅拷贝
发布时间
阅读量:
阅读量
explicit构造函数
所有单参数构造函数必须显式定义以便防止隐式的类型转换。如果不,则遵循较宽松规则时,在无需显式进行类型转换的情况下仍可执行此类操作。
A a;
a = 37;
AI写代码cpp
该代码构建了一个A类的对象a,并进行了赋值操作。
因此,在赋值操作中,在右侧并非另一个A类的对象。
然而,C++允许单参数构造函数实现了隐式的类型转换.
在本例中,编译器将a=37;尝试转化为temp(37); a=temp;的形式.
同时,临时对象也可通过单一参数构造函数来创建.
使用explicit意味着单一参数构造函数无法生成显式的临时对像.
参数传递小结
- 在处理小对象时使用按值调用
- 在处理大对象时采用按常量引用调用
- 引址调用在处理可变的对象时使用
按常量引用返回
如果函数返回的对象是类类型的实例,则使用按const引用的方式可以避免分配新实例带来的复制开销。
这里的const指的是被引用对象本身无法被修改。
这意昧着你想通过引用的方式将对象传递给调用者时,默认情况下该对象被视为this(即被this所包含的部分)。在这种情况下,默认的方法应该选择性地提供基于const或值的引用。
因此,在这种情况下,默认的方法应被选择性地采用基于const或值的方式
全部评论 (0)
还没有任何评论哟~
