废物利用制作衣服:默认构造函数之编译器的约定
来源:百度文库 编辑:中财网 时间:2024/05/03 18:17:51
每个对象在创建的时候都会调用构造函数来为自己进行初始化。如果我们在类中并没有提供现成的构造函数,那么编译器就会自动创建一个默认地构造函数,它什么都不会做,只会对我们所定义的对象进行初始化操作。比如说有一个类A,如果在这个类里面我们并没有提供一个构造函数,那么编译器就会自动为我们创建一个不带参数,函数体为空的默认构造函数:
A::A() {}
但是值得注意的一点是,如果我们自己在类中已经创建了一个构造函数,那么不管你创建的是像上面这样的默认构造函数,还是一个带有参数的构造函数,编译器都不会再为你提供任何默认构造函数。如下面这个程序:
class demo{public:demo(int i){x=i;}int print(){return x;}private:int x;};#includeusing namespace std;int main(){demo *a=new demo;demo *b=new demo(1);cout< print()< 在程序的第14行我们声明了一个对象a,但是与15行不同的是,我们想在这里对a调用默认构造函数,希望它能够被编译器自己提供的默认构造函数所初始化。但是当我们一运行的时候,程序就报错了:“error C2512: “demo”: 没有合适的默认构造函数可用”。
上面这个例子说明了,如果我们创建了一个构造函数之后,那么如果想要调用编译器自己的默认构造函数,我们就必须在类中自己声明一个默认构造函数:
demo() {};那么,程序变成如下所示(在这个程序第3行中,我们自己声明了一个默认构造函数:
class demo{public:demo(){};demo(int i){x=i;}int print(){return x;}private:int x;};#includeusing namespace std;int main(){demo *a=new demo;demo *b=new demo(1);cout< print()< 只有这样,程序才能够顺利运行,输出如下:
ok ,搞定,收工!!!
默认构造函数 缺省构造函数 有区别吗?
c#里是不是不可以有构造函数的默认参数了??
什么是构造函数的特征?
拷贝构造函数的作用
一个关于复制构造函数的问题?
类的定义和构造函数
问个关于构造函数函数重载的问题
求助:构造函数和析构函数的完整定义
包含构造函数和析构函数的C++程序
什么是拷贝构造函数
调用构造函数
构造器函数
c++构造函数问题
c++构造函数问题
什么叫构造函数
java问题:构造函数
云之彼端约定的地方
云之彼岸,约定的地方下载
为什么派生类的构造构造函数非要调用基础类的
构造一个类似printf的函数,输出到字符串
C#可以创建带参数的静态构造函数吗
C++中有关构造函数的四种情况
C++中有关拷贝构造函数的问题
请教:一个简单的C++构造函数问题