杼氖 发表于 2025-6-9 09:00:43

C++多态与虚拟:Objects 实例化(Objects Instantiation)探究

一、Objects的创建 
  依据已有的class CPoint ,我们可以产生一个或多个object(对象),或者说是产生一个instance(实体):
CPoint aPoint(7.2); // aPoint._x 初始值为 7.2
aPoint.x(5.3); // aPoint._x 现值为 5.3  这样的objects可能放在函数的stack之中(对象是在函数内部创建的,例如在函数的作用域内),也有可能放在程序的data segment中(对象是在函数外部创建的,例如在全局作用域或静态作用域内)。我们也可以这样来产生一个objects:
CPoint* pPoint = new CPoint(3.6); // pPoint->_x 初 值 为 3.6
pPoint->x(5.3); // pPoint->_x 现值为 5.3
delete pPoint;  使用new operator产生的objects,是放在程序的heap(堆)之内。

  不管哪一种方式来产生objects,我们依据某个class产生一个object的动作称为instantiation(实例化)。object的诞生和死亡时,会自动调用class中特殊的member function,称为constructor 和 destructor。
  Constructor:object诞生时会自动调用的class member functions称为构造函数,此函数的命名必须与class相同,参数可以自定,没有返回值。class可以有一个以上的constructors,其中无参数的那个称为default constructor;只有一个参数,并且以该class为参数类型的,称为copy constructor。
  Destructor :object生命结束时会自动调用的class member function称为析构函数,一个class只能有一个destructor,没有参数,没有返回值,其命名必须与class相同,并以~为前置符号。
二、Objects 的生命(Scope of Objects)
    由于objects可能位于stack或heap或data segment之中,所以objects的生命周期就有差异。
  1. 放在stack之中的称为local objects,它的生命随着objects的产生产而开始,随着所在函数的执行结束而结束。
  2.放在data segment之中的称为gobal objects,它的生命随着程序的开(比程序进入点还早),随着程序的结束而结束。
  3.放 在heap之中的称为heap objects,它的生命随着new operator而开始,随着delete operator而结束。    
  下面这个例子出现了刚刚所提到的三种不同的生命周期的objects。从程序的执行结果,我们可以清楚的看到三种objects的生命范围。其中用到的constructors(构造函数)和destructors(析构函数)。這個例子出現剛剛所提的三種不同生命週期的 objects。從程式的執行結果,
我們可以清楚看到三種 objects 的生命範圍。其中用到的 constructors(建構式)和 destructors。

#include #include class CDemo{  public:     CDemo(const char* str); // constructor     ~CDemo(); // destructor  private:     char name;}; CDemo::CDemo(const char* str) // constructor{  strncpy(name, str, 20);   cout

琶轮 发表于 2025-12-11 06:50:50

收藏一下   不知道什么时候能用到

申倩语 发表于 2025-12-12 14:31:36

感谢分享,学习下。

冈欤寨 发表于 2025-12-15 16:57:23

感谢,下载保存了

魄柜 发表于 2025-12-23 22:49:30

感谢分享,下载保存了,貌似很强大

怀陶宁 发表于 2026-1-14 11:28:53

新版吗?好像是停更了吧。

慷规扣 发表于 2026-1-18 04:24:46

过来提前占个楼

觞刈 发表于 2026-1-18 11:35:37

谢谢楼主提供!

蒲善思 发表于 2026-1-18 15:15:50

过来提前占个楼

懵崭 发表于 2026-1-21 14:12:07

懂技术并乐意极积无私分享的人越来越少。珍惜

屠焘 发表于 2026-1-22 06:47:29

谢谢分享,辛苦了

撵延兵 发表于 2026-1-24 17:48:00

收藏一下   不知道什么时候能用到

鞭氅 发表于 2026-1-25 08:24:24

新版吗?好像是停更了吧。

宿遘稠 发表于 2026-1-25 08:58:22

感谢发布原创作品,程序园因你更精彩

注思 发表于 2026-1-26 08:10:42

用心讨论,共获提升!

敞撬 发表于 2026-1-29 08:29:01

热心回复!

吕梓美 发表于 2026-1-31 14:08:50

yyds。多谢分享

方子楠 发表于 2026-2-5 10:02:07

热心回复!

焦听云 发表于 2026-2-8 15:08:10

yyds。多谢分享

娥搽裙 发表于 2026-2-9 06:45:46

热心回复!
页: [1] 2
查看完整版本: C++多态与虚拟:Objects 实例化(Objects Instantiation)探究