c++学习笔记(有错误请帮忙指出)---1

文章讲述了在C++中,初始化列表用于在类成员定义时同时赋初值,与在函数体内通过构造函数逐步赋值的方式不同。特别是提到当类内部有参构造函数时,使用初始化列表避免了因无参构造函数缺失导致的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始化列表和函数体内初始化是有差异的。

成员初始化列表是在数据成员定义的同时赋初值,但是构造函的函数体是采用先定义后赋值的方式来做

当我们在用类a作为另一个类b的成员时,若类a中有有参构造函数,对其进行初始化可以这样写

#include <iostream>
using namespace std;



class Point
{

public:
    Point(double xx, double yy)
    {
        Point::x = xx;
        Point::y = yy;
    };
    void Display()
    {
        cout << x << " " << y << endl;
    }
    double x;
    double y;

};


class Circle
{
private:
    Point p;  //圆心点
    double r; //圆半径
public:
    Circle(double x1, double y1, double r1) :p(x1, y1), r(r1) {};
    void Display()
    {
        p.Display();
        cout << r;
    }
};


int main()
{
    double a, b, c;
    cin >> a >> b >> c;
    Circle a1(a, b, c);
    a1.Display();
	
	return 0;
}

因为初始化列表是定义的同时赋初值,所以这里我们可以创建一个Point类的变量

但如果我们在函数体内初始化的话他是先定义再赋值,而我们用p.x = x1;的话,他会默认创建一个无参构造函数,但我们Point中没有无参构造函数所以会报错

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值