构造函数概念:
构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期内只调用一次(创建对象)
作用:
创建一个对象(面向对象,第一步肯定得创建对象)并且数据成员都有初始数值(数值有初始化和赋值)
初始化和赋值区别
- 初始化(数值在构建函数中给予)
- 赋值(数值在构建函数完成之后给予)
初始化(数值在构建函数中给予)
#ifndef __COMPLEX__ #define __COMPLEX__ class complex { public: complex(double r = 0, double i = 0) : re(r), im(i) {} //初始化 private: double re, im; }; #endif // !__COMPLEX__
#include"complex.h" int main() { complex c1(1, 1); return 0; }
1.调用构造函数
2.创建对象名字为c1
3.对象中数据成员与函数参数对应,进行数值给予,生成对象的数据成员顺序是类中private的顺序
4.对象c1创建成功
赋值(数值在构建函数完成之后给予)
#ifndef __COMPLEX__ #define __COMPLEX__ class complex { public: complex(double r = 0, double i = 0) //名字与类名相同 { re = r; im = i; } private: double re, im; }; #endif // !__COMPLEX__
#include"complex.h" int main() { complex c1(1, 1); return 0; }
1.调用构造函数
2.创建对象名字为c1
3.构建函数中没有初始化,编译器自动加上初始化操作,对数据成员进行随机数初始化
4.对象c1创建成功
5.函数中输入的两个参数,函数执行命令行,对数据进行赋值
如何得知两则区别
tihs指针
this指针中存储的是自己对象的地址
在两者构造函数中使用this指针,初始化操作因为类对象完成初始化前,类对象还未形成,所以会对this报错
初始化中使用this
class complex { public: complex(double r = 0, double i = 0) : this->re(r),this-> im(i) {} private: double re, im; };
error: expected '{' before 'this'
赋值中使用this
class complex { public: complex(double r = 0, double i = 0) { this->im = r; this->re = i; } private: double re, im; };
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论(0)