匿名对象(临时对象) (自动构造,自动析构)
C++的创建对象是一个费时,费空间的一个操作。
有些固然是必不可少,但还有一些对象却在我们不知道的情况下被创建了。
通常以下三种情况会产生匿名对象:
1.以值的方式给函数传参,会产生临时对象,为方便区分,称为"参数匿名对象";
2.函数需要返回一个对象时,会产生临时对象,为方便区分,称为"返回匿名对象"
3.类型转换时,会产生临时对象,为方便区分,称为"转换匿名对象";
以如下代码为例进行解释说明:
基础面试中常遇到的:实现String类的四个默认函数
#include <stdio.h>
#include <string>
#include <iostream>
class String
{
public:
int length() const
{
return len_;
}
public:
String()
{
printf("constroctor with no param!\n");
str_ = new char['\0'];
len_ = 0;
}
String(const char *srcChar)
{
printf("constroctor with one param!\n");
if (srcChar == nullptr)
{
str_ = new char['\0