C++构建函数
ljh5930 人气:0构造函数概念:
构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有一个合适的初始值,并且在对象的生命周期内只调用一次(创建对象)
作用:
创建一个对象(面向对象,第一步肯定得创建对象)并且数据成员都有初始数值(数值有初始化和赋值)
初始化和赋值区别
- 初始化(数值在构建函数中给予)
- 赋值(数值在构建函数完成之后给予)
初始化(数值在构建函数中给予)
#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; };
加载全部内容