什么叫缺省函数?

来源:百度知道 编辑:UC知道 时间:2024/09/22 13:39:21

同意二楼的,

比如你定义了一个类:

class A
{};

看上去什么也没有,其实编译器给你自动生成了3个默认函数:

class A
{
public:
A(){} // 默认构造函数
A(const A& x){} // 默认复制构造函数
~A(){} // 默认析构函数
}

这就是为什么你定义一个类;可以直接使用"="操作符来进行隐式间接赋值的原因,但类的数据成员却不会被自动初始化,就象二楼说的,当他们被创建的时候所在的内存中有什么样的值他们就是什么样的值:

#include <iostream>
using namespace std;

class A
{
private:
double a;
public:
// 编译器自动生成
// 其中构造函数不会对a进行初始化
// A(){}
// A(const A& x){}
// ~A(){}
void show(){cout << "a is: " << a << endl;}
};

int main()
{
A a1,a2;

a1 = a2; // A(const A& x)发生作用
a1.show();// 注意: A::a可能包含着垃圾
}

函数原型中带有缺省参数的

如 void Function(int x = 0,int y = 0);
注意:缺省参数后面不能再有非缺省参数
如 void Function(int x = 0,int y);//错误

是指对类没有定义构造函数,析构函数,拷贝函数的时候函数
缺省构造函数:一般指不对数据进行初始化,原来内存是什么就是什么
缺省析构函数