Chinaunix首页 | 论坛 | 博客
  • 博客访问: 230645
  • 博文数量: 75
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 848
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-08 10:27
文章分类
文章存档

2014年(9)

2013年(66)

我的朋友

分类: C/C++

2013-11-17 17:02:01

主要介绍通过堆栈两种方式调用构造函数,什么情况下调用默认构造函数会造成错误


声明栈对象时调用默认构造,成员对象值是不确定的,默认构造函数不会对成员进行处理,输出成员结果是不确定的:


示例:


[cpp] view plaincopy
#include  
using namespace std;  
class test  
{  
private :  
    int mOne;  
    double mTwo;  
public :  
    void getOne(){  
        cout<<"one: "<mOne<     }  
    void getTwo(){  
        cout<<"two: "<mTwo<     }  
};  
int main(){  
    test one;  
    one.getOne();  
    one.getTwo();  
    return 0;  
}  

定义一个不带参数的默认构造函数:


代码:


[cpp] view plaincopy
#include  
using namespace std;  
class test  
{  
private :  
    int mOne;  
    double mTwo;  
public :  
    test(){  
     this->mOne=0;  
     this->mTwo=0.0;  
    }  
    void getOne(){  
        cout<<"one: "<mOne<     }  
    void getTwo(){  
        cout<<"two: "<mTwo<     }  
};  
int main(){  
    test one;  
    one.getOne();  
    one.getTwo();  
    return 0;  
}  
声明带参数的构造函数,但创建对象时没有传递参数,此时不能通过正常编译,原因是编译器不能再生成默认构造函数


代码:


[cpp] view plaincopy
#include  
using namespace std;  
class test  
{  
private :  
    int mOne;  
    double mTwo;  
public :  
    test(int mOne,double mTwo){  
     this->mOne=mOne;  
     this->mTwo=mTwo;  
    }  
    void getOne(){  
        cout<<"one: "<mOne<     }  
    void getTwo(){  
        cout<<"two: "<mTwo<     }  
};  
int main(){  
    test one;  
    one.getOne();  
    one.getTwo();  
    return 0;  
}  




在堆上创建构造函数,及其使用:
代码:


[cpp] view plaincopy
#include  
using namespace std;  
class test  
{  
private :  
    int mOne;  
    double mTwo;  
public :  
    test(int mOne,double mTwo){  
     this->mOne=mOne;  
     this->mTwo=mTwo;  
    }  
    void getOne(){  
        cout<<"one: "<mOne<     }  
    void getTwo(){  
        cout<<"two: "<mTwo<     }  
};  
int main(){  
    test *one = new test(1,2);  
    one->getOne();  
    one->getTwo();  
    delete one;  
    return 0;  
}  

阅读(1065) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~