“C++ 允许我们决定是在写程序时创建对象,还是在运行期间创建,这种控制方法更灵活。”
——from 《JAVA编程思想第四版》
虽然C++只学了一点,但是基本的创建对象原理感觉还是得去了解一下,毕竟很多精髓的算法,都是由它来演绎的。
C++创建对象的方式
方法一 静态创建:
ClassName object(param);
声明了 一个 类型为ClassName的object对象,C++会为它分配足够的存放对象所有成员的存储空间。
注意:为节省存储空间,C++创建对象时仅分配用于保存数据成员的空间,而类中定义的成员函数则被分配到存储空间中的一个公用区域,由该类的所有对象共享。
class Rec
{
public:
Rec(int width,int height);
~Rec();
int getArea();
private:
int Rwidth;
int Rheight;
};
当你Rec myRec(5,5);这样创建一个myRec对象,然后打印出sizeof(myRec);的时候,会得到 8 这个结果。
因为myRec中有2个int类型的数据成员,一个int成员占4个字节,所以myRec对象占8个字节。
这种方法创建的对象,内存分配是分配到栈中的,由C++缺省创建和撤销,自动调用构造函数和析构函数
注意:该方法创建的对象调用类方法时,必须用“.”,而不能用“->”.如myRec.getArea();
注意的有以下两点:
1.该类方法创建的对象是分配到栈当中的
2.该类的数据成员和成员函数分开存放
3.java的调用成员方式与之相似
4.缺省调用构造和析构函数
方法二 动态创建:
ClassName *object=new ClassName(param);(至于不用指针,大家都懂的)
delete object;
这种方法跟java有点类似,相同的是,它们都是在堆上分配内存来创建对象的(与上不同);不同的是,C++用new创建对象时返回的是一个对象指针,object指向一个ClassName的对象,C++分配给object的仅仅是存放指针值的空间。而且,用new 动态创建的对象必须用delete来撤销该对象。只有delete对象才会调用其析构函数。
注意:new创建的对象不是用“*”或“.”来访问该对象的成员函数的,而是用运算符“->”;
例如:Rec *rec=new Rec(3,4);
rec->getArea();
delete rec;
顺便提一下:
一般来说,编译器将内存分为三部分:静态存储区域、栈、堆。静态存储区主要保存全局变量和静态变量,栈存储调用函数相关的变量、地址等,堆存储动态生成的变量。在c中是指由malloc,free运算产生释放的存储空间,在c++中就是指new和delete运算符作用的存储区域。
注意:
1.java是用了与之相似的内存分配方式,在堆中分配内存
java的对象可以实质的看成方便使用的指针
2.指定调用析构函数
分享到:
相关推荐
《1000 Java Tips》是一本专门为Java程序员和开发者准备的实用指南,它集结了1000个关于Java编程的技巧、建议和最佳实践。这本书覆盖了Java语言的各个方面,从基础语法到高级特性,旨在提升读者的编程效率和代码质量...
根据提供的文件信息,我们可以推断出这是一本包含330个Java小技巧的书籍或文档,旨在帮助读者提升Java编程技能。虽然具体内容没有详细列出,但从描述中我们可以大致了解到这本书涉及了Java的多个方面,并且鼓励用户...
【Java Tips】这篇博客主要探讨了Java编程中的实用技巧和最佳实践,旨在帮助开发者提高代码质量和效率。在Java开发过程中,理解和掌握这些技巧是至关重要的,因为它们可以帮助我们避免常见错误,优化性能,并且使...
java-swing-tips, 包含 Java Swing的示例 java-swing-tips英语: 使用小源代码示例介绍 Java Swing的GUI 程序。 许可证https://github.com/aterai/java-swing-tips/blob/master/L
这里我们将探讨"330个有用的Java Tips"这个主题,它涵盖了Java编程的各种技巧和最佳实践,旨在帮助开发者提高代码质量,提升开发效率。 1. **理解基础**:Java的基础包括类、对象、接口、继承、多态等核心概念。...
856页A4格式的Java技巧,实际日常Java经验提供的建议和解决方案。
《500 Java Tips》是一份集合了大量Java编程实用技巧和最佳实践的资源,旨在帮助开发者提升在Java开发中的效率和代码质量。这个压缩包包含了一份名为"500 JAVA Tips.pdf"的PDF文件,这很可能是由一系列独立的Java...
根据给定文件的信息,我们可以总结出“500 JAVA Tips”这一资料中涵盖的主要知识点及其相关信息。 ### 一、概述 “500 JAVA Tips”是一份由作者收集整理的关于Java编程语言的知识资料,包含了从多个Java论坛及新闻...
javaTipsEveryday来自http://javatipseveryday.com - The Brand New Java Training Course的课程内容一览,大体包括java SE,java开发框架等等 1.如何设计Java编程职业。 2.成功建立职业生涯的秘密策略。 3.像专业...
作者表达了对读者的热情欢迎,并简要介绍了这份文档的内容来源:“330 Java Tips”是他从个人网站、多个Java论坛和新闻通讯中收集的好问题及答案的集合。 #### 1.2 网站推荐 文档推荐访问作者的网站 ...
《330 Java Tips&Tricks》是一份包含大量Java编程技巧和问题解答的资源集合,对于想要深入理解和提升Java编程技能的开发者来说,是一份非常宝贵的资料。这份压缩包中的核心文件是“330 Java Tips.pdf”,它涵盖了...
这本PDF文档,名为“1000_Java_Tips_low.pdf”,是由javafaq网站精心编撰的,旨在为Java开发者提供1000个实用的编程技巧和最佳实践。这份资料无疑是Java开发者提升技能、优化代码、解决问题的重要参考资料。 首先,...
### Java--330--Tips:实用开发指南 #### 前言 “Java--330--Tips”是一本汇集了330个实用Java技巧的手册,这些技巧覆盖了多个方面,包括网络编程、多线程处理、图形用户界面(GUI)、数据库操作等。该书的目标读者...
这是我早期“1001 JAVA PROGAMMER'S TIPS”的部分中文译稿,带有原文。是有关图形和多媒体开发等部分。
Use the appendix for tips on Scala and Groovy two other languages that run on JVMs Veterans of the IT employment space know that interviewing for a Java programming position isn"t as simple as ...