C++中有三种常见的实例化方法
- 静态实例化:在程序的全局或静态作用域中定义并初始化一个对象,该对象在程序整个生命周期内只存在一个实例。
- 堆实例化:使用 new 运算符在动态存储区域中分配内存并实例化一个对象。这样创建的对象在程序运行期间一直存在,直到使用 delete 运算符显式释放其内存。
- 栈实例化:在函数或代码块的作用域中定义并实例化一个对象,该对象的生命周期与所在的函数或代码块相同。对象在离开该作用域时自动销毁。 静态实例化的例子
class MyClass { public: MyClass() : m_x(0) {} void setX(int x) { m_x = x; } int getX() const { return m_x; } private: int m_x; }; MyClass globalObject; // 全局实例 int main() { static MyClass staticObject; // 静态实例 globalObject.setX(5); staticObject.setX(10); int globalX = globalObject.getX(); // globalX = 5 int staticX = staticObject.getX(); // staticX = 10 // ... return 0; }
上面的例子中,通过调用 setX 和 getX 来对全局对象 globalObject 和静态对象 staticObject 的成员变量进行访问。
堆实例化的例子
class MyClass { public: MyClass() : m_x(0) {} void setX(int x) { m_x = x; } int getX() const { return m_x; } private: int m_x; }; int main() { MyClass* heapObject = new MyClass; // 堆实例 heapObject->setX(5); int heapX = heapObject->getX(); // heapX = 5 // ... delete heapObject; return 0; }
上面的例子中,通过调用 setX 和 getX 来对堆对象 heapObject 的成员变量进行访问。
栈实例化的例子
class MyClass { public: MyClass() : m_x(0) {} void setX(int x) { m_x = x; } int getX() const { return m_x; } private: int m_x; }; void someFunction() { MyClass stackObject; // 栈实例 stackObject.setX(5); int stackX = stackObject.getX(); // stackX = 5 // ... } int main() { someFunction(); return 0; }
上面的例子中,通过调用 setX 和 getX 来对栈对象 stackObject 的成员变量进行访问。
下一篇:
设计模式(七)观察者模式