在C++中,如果你想要对其他类的对象数据进行增删改查(CRUD:Create, Read, Update, Delete),有几种常见的方式可以实现。
2024-01-08 17:28:35
在C++中,如果你想要对其他类的对象数据进行增删改查(CRUD:Create, Read, Update, Delete),有几种常见的方式可以实现。以下是几种方法的示例:
1. 使用公共成员变量(不推荐)
直接操作公共成员变量是最直接的方法,但这违反了封装的原则,通常不被推荐。
class ExampleClass {
public:
int data;
};
int main() {
ExampleClass obj;
obj.data = 10; // Create/Update
int value = obj.data; // Read
obj.data = 0; // Delete (或设置为特定的“无效”值)
}
2. 使用访问器和修改器(Getter 和 Setter)
这是最常用的方法,通过提供公共接口来访问和修改私有成员变量。
class ExampleClass {
private:
int data;
public:
void setData(int d) { data = d; } // Setter
int getData() const { return data; } // Getter
};
int main() {
ExampleClass obj;
obj.setData(10); // Create/Update
int value = obj.getData(); // Read
obj.setData(0); // Delete (或设置为特定的“无效”值)
}
3. 使用友元函数或友元类
友元函数或友元类可以访问类的私有和保护成员,这在某些特定情况下很有用。
class ExampleClass {
friend void friendFunction(ExampleClass&);
private:
int data;
};
void friendFunction(ExampleClass& obj) {
obj.data = 10; // Create/Update
int value = obj.data; // Read
obj.data = 0; // Delete
}
int main() {
ExampleClass obj;
friendFunction(obj);
}
4. 使用成员函数
类可以提供公共成员函数来实现CRUD操作,这些函数可以是简单的访问器/修改器,或者是更复杂的业务逻辑。
class ExampleClass {
private:
int data;
public:
void createOrUpdateData(int d) { data = d; }
int readData() const { return data; }
void deleteData() { data = 0; }
};
int main() {
ExampleClass obj;
obj.createOrUpdateData(10); // Create/Update
int value = obj.readData(); // Read
obj.deleteData(); // Delete
}
5. 通过构造函数和析构函数
构造函数和析构函数可以用于创建和删除对象时的初始化和清理。
class ExampleClass {
private:
int data;
public:
ExampleClass(int d) : data(d) {} // Create
~ExampleClass() { /* 可以在这里进行清理工作 */ } // Delete
int getData() const { return data; } // Read
void setData(int d) { data = d; } // Update
};
int main() {
ExampleClass obj(10); // Create
int value = obj.getData(); // Read
obj.setData(20); // Update
// 对象销毁时会自动调用析构函数
}
在实际的软件开发中,推荐使用封装性强的方法,如访问器和修改器或成员函数,以保护数据的完整性和安全性。直接访问公共成员变量虽然方便,但可能会导致代码难以维护和错误增加。
文章来源:https://blog.csdn.net/qq_21950671/article/details/135461761
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!