C++ 之委托构造函数& new(this)的运用

本文介绍了C++中的委托构造函数概念,通过实例展示了如何使用委托构造函数进行对象初始化。同时,详细讨论了new(this)关键字的作用,即用于将函数返回的对象赋值给当前对象的this指针。理解这一机制对于优化构造过程至关重要。
摘要由CSDN通过智能技术生成
struct Rect{
    Rect(){
    new(this)   Rect(1, 2, 3, 4, 5, 6);
//         left =1;
//         top =2;
   cout <<"left second:" << left <<endl;
    }
    Rect(int l, int t, int r, int b): Rect(l, t, r, b, 0, 0){
    }

    Rect(Point topleft, Point bottomright){
        Rect(topleft.x, topleft.y,
        bottomright.x, bottomright.y,
        0, 0);
    }
 Rect(int l){

new(this) Rect();
      cout <<"left third:" << left <<endl;
 }
   Rect(int l, int t, int r, int b, int lc, int fc){
        left = l; top = t;
        right = r; bottom = b;
        line_color = lc;
        fill_color = fc;
        //do something else...
         cout <<"left first:" << left <<endl;
    }
    int left;
    int top;
    int right;
    int bottom;
    int line_color;
    int fill_color;
};
int main()
{
 Rect(2);
}

Rect(2) 调用Rect(l),再调用r

C++中,类的构造函数和析构函数是用来初始化和销毁对象的函数。在类中,构造函数和析构函数的名称与类名相同,且没有返回值。下面是一个简单的类示例: ```c++ class MyClass { public: // 构造函数 MyClass() { // 初始化对象 } // 析构函数 ~MyClass() { // 释放对象 } }; ``` 在上述代码中,MyClass是一个类,它包含了一个构造函数和一个析构函数。当程序实例化MyClass对象时,构造函数会被调用,用于初始化对象;当程序销毁MyClass对象时,析构函数会被调用,用于释放对象占用的内存空间和资源。 对于动态分配内存的对象,需要使用new和delete关键字来进行内存的分配和释放。下面是一个简单的示例代码: ```c++ MyClass* myObj = new MyClass(); // 动态分配MyClass对象的内存空间 delete myObj; // 释放MyClass对象的内存空间 ``` 在上述代码中,使用new关键字动态分配了一个MyClass对象的内存空间,并返回该对象的指针。在使用完该对象后,使用delete关键字释放该对象的内存空间。 需要注意的是,使用new动态分配内存空间后,需要手动释放该内存空间,否则会产生内存泄漏。同时,使用delete释放内存空间后,需要将指针置为NULL,以避免出现野指针。 总之,C++语言中的类构造函数和析构函数是用于初始化和销毁对象的函数,而new和delete关键字则是用于动态分配和释放对象内存空间的关键字。程序员需要注意在使用new和delete时,要避免内存泄漏和野指针的产生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值