析构赋值

本文介绍JavaScript中析构赋值的概念及其应用,包括从对象和数组中提取数据,以及如何使用析构赋值简化函数参数处理。此外,还介绍了对象字面量的改进写法,如定义方法时省略function关键字。

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

析构赋值让我们从 Object 或 Array 里取部分数据存为变量。

// 对象
const user = { name: 'guanguan', age: 2 };
const { name, age } = user;
console.log(`${name} : ${age}`);  // guanguan : 2

// 数组
const arr = [1, 2];
const [foo, bar] = arr;
console.log(foo);  // 1

我们也可以析构传入的函数参数。

const add = (state, { payload }) => {
  return state.concat(payload);
};

析构时还可以配 alias,让代码更具有语义。

const add = (state, { payload: todo }) => {
  return state.concat(todo);
};
对象字面量改进

这是析构的反向操作,用于重新组织一个 Object 。

const name = 'duoduo';
const age = 8;

const user = { name, age };  // { name: 'duoduo', age: 8 }

定义对象方法时,还可以省去 function 关键字。

app.model({
  reducers: {
    add() {}  // 等同于 add: function() {}
  },
  effects: {
    *addRemote() {}  // 等同于 addRemote: function*() {}
  },
});
### C++ 中造函数、函数、赋值运算符和拷贝造函数 #### 造函数 造函数是一种特殊的方法,其名称与类名相同,在创建对象时由编译器自动调用。此方法用于初始化新创建的对象成员变量。如果程序员不提供任何造函数,则编译器会生成一个默认版本[^3]。 ```cpp class MyClass { public: int value; // 默认造函数 MyClass() : value(0) {} // 带参数的造函数 MyClass(int v) : value(v) {} }; ``` #### 函数 函数负责清理工作,当对象的生命期结束时被自动调用。它没有参数也没有返回类型,并且在一个类中只能存在唯一的一个函数。如果没有显式定义,系统也会自动生成默认的函数[^2]。 ```cpp class MyClass { public: ~MyClass() { /* 清理资源 */ } }; ``` #### 拷贝造函数 当通过已有的对象来创建另一个同类型的对象时,将会调用拷贝造函数。这通常发生在传递或返回对象副本的情况下。为了防止浅复制带来的潜在问题(比如两个对象共享同一指针),应该实现深复制逻辑[^1]。 ```cpp class MyClass { private: char* data; public: // 拷贝造函数 MyClass(const MyClass& other) { size_t len = strlen(other.data); data = new char[len + 1]; strcpy(data, other.data); } // 防止内存泄漏 ~MyClass() { delete[] data; } }; ``` #### 赋值运算符重载 对于已经存在的对象之间的赋值操作,默认情况下是按位逐字节复制。然而,这种行为可能导致意外的结果特别是涉及到动态分配的数据结时。因此建议重载 `operator=` 来确保安全有效的赋值过程。 ```cpp class MyClass { private: char* data; public: // 赋值运算符重载 MyClass& operator=(const MyClass& rhs) { if (this != &rhs) { delete[] this->data; size_t len = strlen(rhs.data); this->data = new char[len + 1]; strcpy(this->data, rhs.data); } return *this; } }; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值