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`。通过这种方式,我们可以实现不同的关联方式,从而满足不同的需求。

目录
相关文章
|
30天前
|
分布式计算 架构师 大数据
Dataphin常见问题之添加关联维表后,在业务限定找不到关联表字段如何解决
Dataphin是阿里云提供的一站式数据处理服务,旨在帮助企业构建一体化的智能数据处理平台。Dataphin整合了数据建模、数据处理、数据开发、数据服务等多个功能,支持企业更高效地进行数据治理和分析。
|
SQL 数据安全/隐私保护
通用数据级别权限的框架设计与实现(3)-数据列表的权限过滤
查看上篇文章通用数据级别权限的框架设计与实现(2)-数据权限的准备工作,我们开始数据列表的权限过滤. 原理:我们在做过滤列表时,根据用户权限自动注入到相关SQL中,实现相关过滤,如果拥有全部权限,则不生成相关SQL片段 首先我们来分析一下数据列表的SQL 能看到所有数据的SQL SELECT role.
1140 0
|
6月前
关联更新封装(二)
关联更新封装(二)
31 2
|
6月前
关联更新封装(三)
关联更新封装(三)
35 2
|
6月前
关联表更新封装
关联表更新封装
30 2
|
11月前
|
Java uml
依赖和关联的对比和区别
依赖和关联的对比和区别
134 0
|
缓存 IDE API
C#反射与特性(五):主类型成员操作
C#反射与特性(五):主类型成员操作
344 0
C#反射与特性(五):主类型成员操作
|
存储 编译器 程序员
C++数据定义及相关操作
C++数据定义及相关操作
109 0
C++数据定义及相关操作
|
安全 编译器 API
C++在资源管理类中提供对原始资源的访问
C++在资源管理类中提供对原始资源的访问
132 0
【TP5】关联预加载只查询指定字段(类的属性不存在)
【TP5】关联预加载只查询指定字段(类的属性不存在)
461 0
【TP5】关联预加载只查询指定字段(类的属性不存在)