首页 >后端开发 >C++ >C 构造函数中的冒号 (:) 语法如何用于成员初始化和基类调用?

C 构造函数中的冒号 (:) 语法如何用于成员初始化和基类调用?

DDD
DDD原创
2024-12-02 05:22:14180浏览

How Does the Colon (:) Syntax Work in C   Constructors for Member Initialization and Base Class Calls?

理解构造函数中的冒号语法

在 C 中,构造函数是在创建时初始化对象的函数。虽然构造函数名称通常与类名称匹配,但它们可以具有独特的初始化语法。构造函数语法的一个值得注意的方面是使用冒号 (:) 后跟参数列表。

此语法称为成员初始值设定项列表,有两个主要用途:

  • 调用基类构造函数:
    创建派生类时,也必须初始化其基类。成员初始值设定项列表允许您调用基类的构造函数,根据需要传递参数。
  • 初始化数据成员:
    成员初始值设定项列表也可用于初始化非- 类的静态数据成员。这是通过指定数据成员名称,后跟赋值运算符和参数来完成的。

例如,考虑以下代码:

class demo 
{
private:
    unsigned char len, *dat;

public:
    demo(unsigned char le = 5, unsigned char default) : len(le) 
    { 
        dat = new char[len];                                      
        for (int i = 0; i <= le; i++)                             
            dat[i] = default;
    }

    void ~demo(void) 
    {                                            
        delete [] *dat;                                           
    }
};

在此示例中,构造函数有两个参数,le 和default。成员初始值设定项列表 : len(le) 将 le 的值分配给 len 数据成员。

此外,在派生类 newdemo 中:

class newdemo : public demo 
{
private:
    int *dat1;

public:
    newdemo(void) : demo(0, 0)
    {
     *dat1 = 0;                                                   
     return 0;                                                    
    }
};

成员初始值设定项列表 : demo( 0, 0) 使用参数 0 和 0 调用基类构造函数 demo,初始化基类的 len 和默认数据成员class.

成员初始值设定项列表是初始化数据成员和调用基类构造函数的便捷高效方法,可增强代码的安全性和清晰度。

以上是C 构造函数中的冒号 (:) 语法如何用于成员初始化和基类调用?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn