重载、初始化列表、友元

1、函数重载(overload):在同一作用域中,函数名相同,参数列表不同,则多个函数形成重载
参数列表不通:参数类型不同或者个数不同
CPoint(float _x = 0, _y = 0); //构造函数声明
//默认实例化对象在没有赋值情况下x = 0,y = 0,因此在用此函数时,不能定义无参构造 函数,以免产生二义性;

CPoint::CPoint(float _x ,float _y)      //构造函数原型
    {
        x = _x;
        y = _y;
    }

2、初始化列表:初始化成员变量

例:  CPoint();CPoint  c; 则x = 0; y = 0;
CPoint::CPoint()L:x(0),y(0) //x(0) == x = _x;
{
     //x = _x;
    //y = _y;
}

CPoint(float _x,float _y) => CPoint::CPoint(float _x,float _y):x(_x),y(_y) {}

初始化列表方式用:开始,成员之间用,隔开
⚠️:初始化列表只能出现在构造函数处,(具体:构造函数头之后紧接着冒号开头之后,后面紧跟函数体)
有四种情况必须使用初始化列表:
1)const成员变量
例:Point::Point():x(120){} // x 为const int 类型
Point::Point(int _x,int _y):x(_x)
{
y = _y;
}
2)引用类型的成员变量
3)没有默认构造函数的类类型成员变量(组合)
4)继承中,基类部分的初始化
3、复合类(组合类):一个类的成员变量(属性)是另外一个类的对象,那么前者被称为复合类。
⚠️:组合类中的构造函数调用(先调用属性对象的‘构造函数’,再初始化另外部分)

友元函数和友元类
1、友元:可以直接访问私有成员(破坏了数据安全)
2、友元函数:friend、不是成员函数,可以直接访问类的私有成员的非成员函数
函数调用:
普通函数:函数名
成员函数:对象.函数名
3、友元类:friend
如果类A是类B的友元类,那么A中的所有成员函数都是类B的友元函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值