C++基础学习:构造函数和初始化列表

来源:给类内普通成员赋值,写成成员函数为其赋值

只有静态常量整型才能初始化!!!

形式:类名(参数列表){} //无返回值

作用:对数据成员赋初始值

调用:对象定义的时候

栈区对象

CStu stu(12, 12.3f); //构造函数参数传递

堆区对象 :声明指针并不会调用构造函数,new空间的时候调用

CStu* stu1 = new CStu(13, 13.4f);

类型

1、默认构造函数:什么都不做;只要用户声明构造函数,默认的构造函数就没有了

2、无参数

3、有参数构造函数: 通过对象传递 可以指定默认值

4、多个构造函数构成重载

成员函数定义

1、类内定义

2、类外 类内声明:意义是用于多文件

类外定义

class CStu
{
public:
    int age;//只有静态常量整型才能初始化,这是普通成员 
    float f;

    //类初始化函数  自动调用
    //类名() {}
    CStu()//没有返回值 对象创建过程中调用的
    {
        age = 12;
        f = 12.23f;
     }
    void fun()
    {
        age = 12;
        f = 12.23f;
    }
};

int main()
{
    //CStu stu;   //作用  执行时间   栈区对象
    CStu* stu1 = new CStu;//堆区对象  指针对象   不会调用构造函数   只有new对象之后才是调用空间的过程
    //stu.fun();
    //cout << stu.age << stu.f << endl;//对象成员未初始化未初始化的值输出会崩溃,
    system("pause");
    return 0;
}

初始化列表

初始化与赋值的区别

意义上:初始化是一个变量或者对象产生之时就赋予一个初始值,伴随性质

赋值是一个变量或者对象产生之后的任意时刻可以赋予一个值,随意性质

宏观代码上:基本数据类型:作用相同

数组,结构体:初始化和赋值的形式不同

作用相同

引用,const:只能初始化

不能赋值

函数定义和声明

形式

构造函数之后加个冒号:a(1),b(2)

不是花括号之后

作用

跟构造函数的区别:基本数据类型,用哪个都行

引用,const必须用初始化列表

对数据成员进行初始化:可通过数值对数据成员初始化

可通过构造函数参数对数据成员进行初始化

可通过成员之间相互初始化

成员初始化的顺序

初始化的方式很多,根据自己的需要用(后续还会提到)

执行顺序:在构造函数之前

引用和const

引用:引用成员

引用参数

引用类外

const:参数

常量

注意点:多个构造函数,初始化列表绑定所在的构造函数

数组和结构体如何使用初始化列表

数组

CStu() : arr() VC++无效果

Visual Studio有效果

通常设置数组元素全为0的方法 memset

for循环

结构体:可直接赋值

用初始化列表反而增加了复杂性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值