C++中如何在一个类中初始化其它类

26 篇文章 0 订阅
#include <iostream>

using namespace std;

class GPU {
public:
    GPU(int id) : m_gpuId(id)
    {
        cout << "GPU" << endl;
    }
private:
    int m_gpuId;
};

class Memory {
public:
    Memory(int mem) : m_memSize(mem)
    {
        cout << "Memory" << endl;
    }
private:
    int m_memSize;
};

class DeviceManager {
public:
    DeviceManager()
    {
        cout << "DeviceManager" << endl;
    }
private:
    GPU m_gpu{2};
    Memory m_memory{3};
};

int main()
{
    DeviceManager deviceManager;
    return 0;
}

执行结果

GPU
Memory
DeviceManager

假如改用指针,则不会创建其它对象的实例,见下面的代码

#include <iostream>

using namespace std;

class GPU {
public:
    GPU(int id) : m_gpuId(id)
    {
        cout << "GPU" << endl;
    }
private:
    int m_gpuId;
};

class Memory {
public:
    Memory(int mem) : m_memSize(mem)
    {
        cout << "Memory" << endl;
    }
private:
    int m_memSize;
};

class DeviceManager {
public:
    DeviceManager()
    {
        cout << "DeviceManager" << endl;
    }
private:
    GPU *m_gpu;
    Memory *m_memory;
};

int main()
{
    DeviceManager deviceManager;
    return 0;
}

运行结果

DeviceManager

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 C++ ,可以在类内部使用 static 关键字声明静态成员变量,并在外部初始化,例如: ```c++ class MyClass { public: static int myStaticVar; }; int MyClass::myStaticVar = 42; ``` 注意,静态成员变量必须在外部初始化。如果在类内初始化静态成员变量,编译器会报错。 ### 回答2: 在C语言,可以通过在定义外部定义并初始化静态变量来在类内初始化静态变量。具体步骤如下: 1.在定义的头文件声明静态变量。可以使用关键字"static"来修饰这个变量,表示它是一个静态成员。 2.在定义的源文件定义并初始化静态变量。在源文件,可以使用关键字"static"来修饰该变量,并将其初始化。 举例说明如下: // 定义头文件 MyClass.h #ifndef MYCLASS_H #define MYCLASS_H class MyClass{ private: static int staticVar; // 静态变量的声明 public: // 构造函数等其他成员函数的声明 }; #endif // 定义的源文件 MyClass.cpp #include "MyClass.h" int MyClass::staticVar = 0; // 静态变量的定义和初始化 // 在使用这个静态变量的其他函数可以通过名加作用域解析符(::)来访问和修改静态变量的值 void foo(){ MyClass::staticVar = 10; // 修改静态变量的值 } 在这个例子,通过在定义的源文件定义并初始化静态变量"staticVar",可以实现在类内初始化静态变量。 ### 回答3: 在C语言,我们无法直接在类内初始化静态变量。因为C语言没有的概念,只有结构体。但是,可以使用以下方法来模拟在类内初始化静态变量的操作。 首先,在结构体定义静态变量。然后,在函数,使用静态变量之前,先判断该静态变量是否已经被初始化。如果没有被初始化,则在函数初始化静态变量,并将其标记为已初始化。这样,即使多次调用该函数,静态变量也只会被初始化一次。 下面是一个示例代码: ```c #include <stdio.h> struct MyClass { static int staticVar; }; int initializeStaticVar() { static int isInitialized = 0; static int staticVar; if (!isInitialized) { // 在这里进行静态变量的初始化操作 staticVar = 10; isInitialized = 1; printf("静态变量已初始化\n"); } return staticVar; } int main() { printf("静态变量值:%d\n", initializeStaticVar()); printf("静态变量值:%d\n", initializeStaticVar()); return 0; } ``` 输出结果为: ``` 静态变量已初始化 静态变量值:10 静态变量值:10 ``` 通过这种方法,我们可以在C语言模拟实现类内初始化静态变量的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值