转载:http://zhidao.baidu.com/question/146659560.html
我觉得这个问题,回答的很好。
在c++的类中,我如果要访问类中的成员变量或函数,有2种方法,第一种就是定义一个一个对象,如:
Class A ... A aa; aa.xxx(); 另外一种就是 Class B ... B *aa = new B(); aa->xxx(); 这两种方法在使用上不知有没有什么区别,或是什么情况下用指针对象,什么情况下用普通对象?
问题补充:
用指针对象,用完之后需要释放内存空间
满意回答
2010-04-22 18:01
你提的问题很好,这个就是c++和java之间的区别,c++函数可以不写在类里面,这样就产生了全局变量定义, 文件#include等,在java中,A a = new A() c++中等同于 A a; 另外在c++中还有另外一中声明和实例化就是使用指针,如:A* a= new A() c++中的A a;就已经构造了对象; 而在java中 A a; 就是声明,还没有分配空间,在c++中就非常的灵活, A a;在栈(stack)上分配空间,A * a= new A;在堆(heap)上分配空间 栈上空间自动回收,堆空间需要程序员手动回收
相关推荐
6. **继承与多态**:继承允许一个类(派生类)从另一个类(基类)继承属性和行为。多态性使得不同的对象可以响应同一种消息。虚函数(virtual)是实现多态的关键,它允许通过基类指针调用派生类的重写版本。 7. **...
C++编译系统只为对象的数据成员分配内存空间,一个类的所有对象共享一个成员函数空间。 与C语言的区别 C++语言与C语言的主要区别在于运行效率、初始化方法、变量定义、输入输出流的声明等方面。C语言比C++运行更...
这意味着在C++中,我们可以通过指针来显式地申请和释放内存空间,而Java则不提供这样的直接访问权限。 ##### 如何获取指针? 为了给指针赋值,我们需要能够获取变量的地址。C++提供了两种主要方式来实现这一点: 1...
使用class关键字声明一个类。 9. const:常量的,constant所修饰的对象或变量不能被改变,修饰函数时,该函数不能改变在该函数外面声明的变量也不能调用任何非const函数。 10. const_cast:用法:const_cast...
当一个基类指针或引用指向派生类对象时,如果析构函数是虚函数,那么在删除该指针或引用时,会调用派生类的析构函数,确保资源的正确释放。析构函数不能是纯虚函数,因为纯虚函数的目的是为了声明一个抽象基类,而...
union(联合体)与struct(结构体)的主要区别在于,union的所有成员共享同一块内存空间,其大小由成员中占用最大内存的类型决定。而struct中成员的内存是独立的。由于union所有成员共享内存,编译器通常将其成员...
### (转)一个优秀的C++学习笔记 #### 经验之谈 - **数组使用需谨慎**:在处理数组时,特别需要注意下标的操作。数组越界是编程中常见的错误之一,可能导致程序崩溃或者未定义行为。对于数组的访问应该始终保持在...
C#中所有对象都只能通过关键词“new”来创建,C++的“类名_对象名”方式在C#中变为声明一个引用。 在内存管理方面,C++使用new/delete,而C#使用托管堆来存储数组元素,更加安全。C#还禁止了switch语句的失败情形,...
this指针是一个隐藏在类的非静态成员函数中的指针,指向调用该成员函数的对象。 #### 81. this指针易混问题 this指针指向调用成员函数的对象实例,不能为null,只能在类的成员函数中使用。 #### 82. 构造函数、...
- **面向对象编程**:C++支持封装、继承和多态,类是对象的模板,对象是类的实例。 - **构造函数与析构函数**:构造函数用于对象初始化,析构函数则在对象销毁时执行。 - **成员函数与友元**:成员函数操作类的...
- **成员共享内存**:结构体的成员共用一块内存空间,改变其中一个成员可能会影响其他成员。 #### 5. 栈与堆的区别? - **栈**(Stack): - 栈是一种后进先出(LIFO)的数据结构,主要用来保存函数调用的上下文...
联合体则共享同一块内存,只有一个成员在任何时候是有效的。 12. **数组与指针**:数组名是一个指向其首元素的指针,但数组和指针并非完全相同,数组是固定大小的连续内存区域,而指针可以动态改变所指的内存地址。...
引用则是另一个变量的别名,它在声明时必须初始化,且之后不能改变引用的对象。两者在内存管理中都有重要作用,尤其是在处理动态内存时。 C++提供了智能指针,如std::unique_ptr、std::shared_ptr和std::weak_ptr,...
当你需要一个在运行时才能确定大小的变量或对象时,可以使用`new`运算符来向系统申请自由存储区中的一块内存。例如,你可以声明一个整型指针`int *pi = new int(0)`,这会为一个整型变量分配空间并将其初始化为0。这...
在C/C++编程中,内存管理是至关重要的一个环节,因为它直接影响到程序的性能和稳定性。本专题将深入探讨C/C++中的内存分配方式,特别是堆区和栈区的使用,以及与VC++(Visual C++)开发环境相关的内存管理实践。 ...
在C++中,为了兼容C语言,可以使用`extern "C"`关键字来声明C风格的函数。因此,声明`const void f(void)`为C程序中的库函数的方式是: ```cpp extern "C" { const void f(void); } ``` 这样可以确保C++...
《南理代代传C++(1).zip》是一个压缩包文件,可能包含了与C++编程语言相关的教学材料,如课件、代码示例、练习题等。C++是一种广泛应用的面向对象的编程语言,由Bjarne Stroustrup于1983年在C语言的基础上发展而来。...