C++类的实例化的两种方法

C++

类的实例化有两种方法:

直接定义对象:

先定义一个类:

class A

{

public:

A();

virtual ~A();

...

...

};

类实现略。

用的时候:

A a;

a.

成员函数;

a.

成员变量;

a

就是一个对象。

定义一个类指针的方法: A *p = new A; p->成员函数; p->成员变量; 
最后别忘了销毁对象:delete[] a;  
A由系统创建并释放,你不要担心会出现内存泄露,但是生命期只有在本区域的大括号内,出了大括号就没用了。p是指针,要自己释放,用不好很危险,用好了功能强大,因为他可以赋值给全局的变量,一下子从局部变量变成全局变量,还能把对象作为函数返回值。  
A a; 
A * a = new a(); 
以上两种方式皆可实现类的实例化,有new的区别在于:

1.前者在堆栈中分配内存,后者为动态内存分配,在一般应用中是没有什么区别的,但动态内存分配会使对象的可控性增强。 2.不加new在堆栈中分配内存 3.大程序用new,小程序直接申请 4.只是把对象分配在堆栈内存中 
5.new必须delete删除,不用new系统会自动回收内存

时间: 2024-12-25 16:49:28

C++类的实例化的两种方法的相关文章

php7实例化类有对象有两种方法

php7实例化类有对象有两种方法,下面给介绍具体两种方法 class Person{public $a="96net.com.cn";public function eat(){echo 'xxxx';} } 1,NEW 关键词实例化对象 $xm= new Person();或者$xm= new Person; 2, 类名字符串,把类名赋值给变量 $strs='Person'; $xm= new $strs(); 原文地址:https://blog.51cto.com/13959155

实例化的两种方法(new和函数法)

// 定义类 类名字是 classA  function classA(){      this.b=1;  }  classA.prototype.b=44;  classA.prototype.show = function(){      alert(this.b);  };  // 用new实例化  var b = new classA();  b.show();  //11没有this.b=1的话输出为44(现在构造函数里面找没找到再到原型上面找)// 用函数实例化  function

访问类的method的两种方法

首先看如下代码: 1 <?php 2 class myClass{ 3 public function echoName() { 4 echo "我的名字是王建华<br>"; 5 } 6 } 7 8 myClass::echoName(); //直接通过类里面的函数,访问里面定义的函数(方法): 9 10 $myVar = new myClass(); //通过构造一个对象的方法, 11 $myVar->echoName(); //引用类里面的函数: 12 ?&

Js类的静态方法与实例方法区分以及jQuery如何拓展两种方法

上学时C#老师讲到对象有两类方法,静态方法(Static)和实例方法(非Static),当时不理解静态是为何意,只是强记. 后来从事了前端的工作,一直在对类(即对象,Js中严格来说没有类的定义,虽众所周知,这里还是赘述一番,以免产生歧义)的操作上,严重缺乏整体概念,最近看extetnd中再次提到拓展静态方法与实例方法,故而再次百度,才幡然领悟,其实一直有用,只是不知其专业术语呀,哈哈~ 静态方法,属于类的方法,即类可以直接调用的方法.为类所有实例化对象所共用(但不能用实例对象之间调用),所以静态

实现多线程的两种方法:继承Thread类或实现Runnable接口

实现多线程的两种方法:继承Thread类或实现Runnable接口 Java中实现多线程有两种方法:继承Thread类和实现Runnable接口,在程序开发中只要是多线程,我们一般都是实现Runnable接口,原因归结为一点:实现接口比继承类要好. 多线程的第一种实现方式:继承Thread类 步骤如下 创建一个继承Thread的类(假定为A),并重写Thread的run方法 构造一个A类对象,假定为aa 调用aa的start方法.(start方法是从Thread继承过来的) 具体例子如下 pac

Javascript使用function创建类的两种方法

1.使用function类 //myFunction.js var CMyFunc=function() { //类的公共方法,供外部调用 this.Func1=function() { var i=0; return i; } this.Func2=function() { _privateFunc(); } //类中的私有方法,供公共方法调用 function _privateFunc() { return 0; ] } CMyFunc myFunc=new CMyFunc(); 使用:其它

[MongoDB学习笔记-02] Node.js连接MongoDB的两种方法

MongoDB Node.js驱动程序是被官方所支持的原生Node.js驱动程序,他是至今为止最好的实现, 并且得到了MongoDB官方的支持.MongoDB团队已经采用MongoDB Node.js驱动程序作为标准方法. npm install mongodb@1.4.3 // MongoDB Node.js驱动程序 npm install mongoose@3.8.8 //mongoose模块 要从Node.js连接MongoDB数据库我们有两种方法可选择: 通过实例化mongodb模块中提

android 中传递对象两种方法探索(Serializable,Parcelable)

相信大家在android开发的过程中总会遇到要在Activity中间传递数据的情况,当然,遇到需要在Intent中传递对象的情况也不可避免,所以我就so了一下相关的知识,在这里总结消化一下.就目前来说,我了解到的只有两种方式: 1.利用Bundle.putSerializable(Key,Object): 2.利用Bundle.putParcelable(Key, Object): 下面详细介绍两种方法的使用和区别: 首先第一点,这两种方法实现的前提都需要将传递的对象Object序列化,那么,问

Android在布局中动态添加view的两种方法

一.说明 添加视图文件的时候有两种方式:1.通过在xml文件定义layout:2.java代码编写 二.前言说明 1.构造xml文件 2.LayoutInflater 提到addview,首先要了解一下LayoutInflater类.这个类最主要的功能就是实现将xml表述的layout转化为View的功能.为了便于理解,我们可以将它与findViewById()作一比较,二者都是实例化某一对象,不同的是findViewById()是找xml布局文件下的具体widget控件实例化,而LayoutI