c++中的构造函数到底是什么

构造函数:


一:什么是构造函数:
构造函数是特殊的类成员函数
构造函数创建对象时初始化对象--为对象成员变量赋初始值


二:构造函数的定义
为什么需要构造函数:方便初始化对象
其他的赋值方式呢?
1、先访问在给值
2、专门写一个函数给值
为什么不直接用别的赋值方式,而用构造函数初始化对象,因为c++是面向对象的思想,后面还要用到继承,封闭,等等
用构造函数是比其他赋值方式更好的

三:构造函数的语法要求:
1、函数名和类名相同
2、没有返回值类型和返回值
3、满足重载条件可以重载(因为构造函数没有返回值类型和返回值)
举个例子:

#include<iostream>
#include<string>
using namespace std
class myclass
{
public:
    myclass(){}//无参构造
    myclass(int a){}//带参构造,类中实现
    myclass(char ch);//带参构造,类外实现
};
myclass::myclass(char ch)
{

}

构造函数的调用时机:
1、创建对象的时候系统自动调用,不需要也不能自己调用
2、通过控制实参,可以控制调用的构造函数的重载


构造函数的特点

:1、如果用户提供了构造函数(自己写了)
                那么系统就不再提供默认构造(低保没了)
                2类中如果只有有参构造,没有无参构造,(自己写了)
                那么就不能调用默认构造的方式初始化对象(低保没了)
                想用这种方式初始化对象那么久提供无参构造(再写一个)

成员初始化列表


初始化列表也是给类中数据成员初值的一种方式。

成员初始化列表的语法
1、不能用于除构造函数之外的其他成员函数。
2、位于形参表的右括号之后,函数体左括号之后。
3、成员初始经列表由逗号分隔的初始化列表组成(前面带冒号)。
4、必须用这种格式来初始化非静态const数据成员。
5、必须用这种格式来初始化引用数据成员

成员初始化列表
代码格式:
 

类名::构造函数名(形参表)
:数据成员1(数据1),数据成员2(数据2)......数据成员n(数据n)
{
    函数体
}
比如:
#include<iostream>
#include<string>
using namespace std;
classname::classname(int n, int v)
:num(n), val(v)
{
    num = n;
    cout << "调用了两个参数的构造函数" << endl;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

翘指

创作不易,一分也是爱

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值