57静态关联与动态关联

简介: 57静态关联与动态关联

C++入门——60s从0到1

静态关联与动态关联

 

在C++中,关联是指将一个类的成员变量与另一个类的实例相关联。在C++中,有两种关联方式:静态关联和动态关联。

 

静态关联是在类定义时进行的关联,即在类定义中直接将另一个类的实例作为成员变量来声明。静态关联的优点是简单明了,但是缺点是不够灵活,因为一旦关联关系确定后,就无法修改或删除。

 

动态关联是在运行时进行关联的,即在程序运行时根据需要动态地关联一个类的实例到一个另一个类的实例上。动态关联通常使用指针或引用来实现。动态关联的优点是灵活性高,可以根据需要动态地修改或删除关联关系。缺点是需要更多的代码来管理关联关系。

 

下面是一个简单的示例代码,演示了如何使用静态关联和动态关联:

 

#include <iostream>
using namespace std;
 
// 类 A
class A {
public:
    void setName(string name) {
        this->name = name;
    }
    void printName() {
        cout << "Name: " << name << endl;
    }
private:
    string name;
};
 
// 类 B
class B {
public:
    void setA(A* a) {
        this->a = a;
    }
    void printA() {
        a->printName();
    }
private:
    A* a;
};
 
int main() {
    // 静态关联
    A a1("Alice");
    B b1;
    b1.setA(&a1);
    b1.printA(); // 输出 Name: Alice
 
    // 动态关联
    A a2("Bob");
    B* b2 = new B();
    b2->setA(&a2);
    b2->printA(); // 输出 Name: Bob
 
    delete b2; // 释放动态关联的对象
    return 0;
}

 

在上面的例子中,我们定义了两个类`A`和`B`。`A`类有一个成员变量`name`,`B`类有一个指向`A`对象的指针`a`。在`main()`函数中,我们演示了如何使用静态关联和动态关联来关联`A`对象和`B`对象。在静态关联的情况下,我们将`A`对象直接作为`B`对象的成员变量来声明;在动态关联的情况下,我们创建了一个指向`A`对象的指针,并将其赋值给`B`对象的成员变量`a`。通过这种方式,我们可以实现不同的关联方式,从而满足不同的需求。

目录
相关文章
|
28天前
|
Windows
该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置“页面中创建关联
【10月更文挑战第22天】当你遇到“该文件没有与之关联的应用来执行该操作”的提示时,通常是因为文件类型未关联应用或文件损坏。解决方法包括:1. 确定文件类型并安装合适的应用程序,如Microsoft Office、Adobe Acrobat Reader等;2. 如果已安装应用,进入系统设置关联文件类型;3. 检查文件完整性,重新下载或验证文件格式。
941 1
|
SQL 数据安全/隐私保护
通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤
查看上篇文章通用数据级别权限的框架设计与实现(2)-数据权限的准备工作,我们开始数据列表的权限过滤. 原理:我们在做过滤列表时,根据用户权限自动注入到相关SQL中,实现相关过滤,如果拥有全部权限,则不生成相关SQL片段 首先我们来分析一下数据列表的SQL 能看到所有数据的SQL SELECT role.
1192 0
|
11月前
关联更新封装(二)
关联更新封装(二)
60 2
|
11月前
关联更新封装(三)
关联更新封装(三)
56 2
|
11月前
关联表更新封装
关联表更新封装
44 2
|
移动开发 JavaScript 算法
如何实现动态内容条件筛选
这两天看了一下后端给的接口文档,每一个都要求筛选,而且这个筛选还是多条件的,还是不能固定的,要求根据用户的输入然后筛选,我之前的实现大概是这样子,当用户想要筛选的时候就去检索条件,并输入相关的内容进行筛选
|
存储 编译器 程序员
C++数据定义及相关操作
C++数据定义及相关操作
140 0
C++数据定义及相关操作
|
数据库
tp5.1关联预加载 -- 并再次解释模型的关联
tp5.1关联预加载 -- 并再次解释模型的关联
205 0
tp5.1关联预加载 -- 并再次解释模型的关联
【TP5】关联预加载只查询指定字段(类的属性不存在)
【TP5】关联预加载只查询指定字段(类的属性不存在)
496 0
【TP5】关联预加载只查询指定字段(类的属性不存在)
|
安全 编译器 API
C++在资源管理类中提供对原始资源的访问
C++在资源管理类中提供对原始资源的访问
157 0