C++用new创建的对象和不用new创建的对象的区别

 

在C++中,使用new关键字来创建对象时,与不使用new关键字来创建对象时,会产生以下几个区别:

  1. 内存管理:使用new关键字来创建对象时,由编译器来决定分配内存的方式,这样可以更有效地利用内存资源。而不使用new关键字来创建对象时,则需要手动分配内存,可能会浪费一些内存资源。
  2. 对象生命周期:使用new关键字来创建对象时,新分配的对象具有与类的构造函数一致的生命周期,即在类的析构函数被调用时,对象将被销毁。而不使用new关键字来创建对象时,新分配的对象的生命周期由分配的内存决定,可能在类的析构函数之后还会保留对象的状态。
  3. 变量访问:在使用new关键字来创建对象时,如果类定义了私有成员变量,则只能在类的内部访问这些变量,而不能在类的外部访问。而不使用new关键字来创建对象时,如果类定义了私有成员变量,则可以在类的内部和外部访问这些变量。
  4. 继承:在使用new关键字来创建对象时,子类的对象将继承父类的非私有成员变量和非私有成员函数。而不使用new关键字来创建对象时,子类的对象将重新定义父类的非私有成员变量和非私有成员函数。
  5. 多态:使用new关键字来创建对象时,如果类定义了多态成员函数,则在调用这些多态成员函数时,将创建对应类型的新对象,而不是调用父类的非多态成员函数。而不使用new关键字来创建对象时,如果类定义了多态成员函数,则仍然调用父类的非多态成员函数。

总的来说,使用new关键字来创建对象可以更有效地利用内存资源,具有更好的对象生命周期管理,可以避免手动分配内存带来的浪费,并且可以实现更好的多态性。

 

 

########################

posted @ 2023-04-29 15:46  西北逍遥  阅读(476)  评论(0编辑  收藏  举报