关于C++默认构造函数的定义和调用
来源:互联网 发布:大淘客到底是什么软件 编辑:程序博客网 时间:2024/05/29 05:53
主要介绍通过堆栈两种方式调用构造函数,什么情况下调用默认构造函数会造成错误
声明栈对象时调用默认构造,成员对象值是不确定的,默认构造函数不会对成员进行处理,输出成员结果是不确定的:
示例:
#include <iostream>using namespace std;class test{private :int mOne;double mTwo;public :void getOne(){cout<<"one: "<<this->mOne<<endl;}void getTwo(){cout<<"two: "<<this->mTwo<<endl;}};int main(){ test one;one.getOne();one.getTwo();return 0;}运行结果:
定义一个不带参数的默认构造函数:
代码:
#include <iostream>using namespace std;class test{private :int mOne;double mTwo;public : test(){ this->mOne=0; this->mTwo=0.0;}void getOne(){cout<<"one: "<<this->mOne<<endl;}void getTwo(){cout<<"two: "<<this->mTwo<<endl;}};int main(){ test one;one.getOne();one.getTwo();return 0;}运行结果:
声明带参数的构造函数,但创建对象时没有传递参数,此时不能通过正常编译,原因是编译器不能再生成默认构造函数
代码:
#include <iostream>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: "<<this->mOne<<endl;}void getTwo(){cout<<"two: "<<this->mTwo<<endl;}};int main(){ test one;one.getOne();one.getTwo();return 0;}
在堆上创建构造函数,及其使用:
代码:
#include <iostream>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: "<<this->mOne<<endl;}void getTwo(){cout<<"two: "<<this->mTwo<<endl;}};int main(){ test *one = new test(1,2);one->getOne();one->getTwo();delete one;return 0;}
运行结果:
- 关于C++默认构造函数的定义和调用
- 构造函数的默认调用
- C++:派生类的默认构造函数和拷贝构造函数调用基类构造函数的机制(含程序验证)
- 关于c++默认的构造函数、析构函数、拷贝构造函数、move函数
- 关于构造函数的默认构造
- 莫用类的默认构造函数定义变量
- [祥:]C++定义对象的时候调用默认的构造函数,各种形式
- java 和c++关于默认构造函数的区别
- C++实验关于构造函数的定义和使用
- 关于 如果定义了复制构造函数,也必须定义默认构造函数
- 关于构造函数和析构函数的调用顺序
- C/C++中关于main函数的调用和定义形式
- 关于默认构造函数
- 关于默认构造函数
- effective C++之关于类成员的初始化,及默认构造函数、默认赋值构造函数和赋值函数
- 复制构造函数的定义及调用
- 1.面向对象--构造函数-定义 02-面向对象(构造函数-默认构造函数 03-面向对象--构造函数-构造函数和一般函数的区别 04-面向对象(构造函数-重载 05-面向对象(构造函数-内存图解)
- 关于默认构造函数的说明
- php cli多进程
- Express设置主机头
- OSPF协议工作原理
- poj 3252(细心+组合数溢出+边界条件计算+算上数据本身)
- Stein算法求最大公约数
- 关于C++默认构造函数的定义和调用
- 【转】常见的正则表达式
- Ubuntu 12.04 安装Openfire
- poj 1850(以字符a开始长度为len的个数+数字本身)
- ACM竞赛
- AT&T 和Intel
- poj 1019(组外偏移->组内偏移)
- mac 如何显示隐藏文件和.点开头文件?
- 各种电子管