类对象实例的迷惑!请高手帮忙理清一下

u2m 2003-08-18 04:18:51
创建类对象实例,什么时候需要new生成,比如CClass _myClass=new CClass,什么时候不需要,只声明就可?
我总是很模糊
...全文
22 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
laodie 2003-08-19
  • 打赏
  • 举报
回复
以上说的真客气啊:
需要指针操作多个对象时用new,注意关键字:
1,指针;
2,多个对象;(用于动态内存分配)

所以一般用指针操作对象不外乎2种概念:
A aa;
A *p1=&aa;

A *p2= new A(4);

关键字:指针!
所以,CClass _myClass=new CClass根本不可能!
只可以CClass *_myClass=new CClass()
哈哈,看来你看书不仔细啊,只有与指针相关时才用new!!!
  • 打赏
  • 举报
回复
A a(3);
A * p = new A(4);
这两种有什么区别吗?什么时候用哪种?
=======================
1,系统开辟一个空间给a.

2,系统开辟一个空间给p.
new开辟一个空间
我们自己必须delete
my_mtx 2003-08-18
  • 打赏
  • 举报
回复
类指针时要new
例如:
class A

{
int x;
A(int t)
{
x =t;
}
}
class b;
{
b();
~b()
a a1;
a * a2;

}

a1不能new
a2必须要new
GZCompiler 2003-08-18
  • 打赏
  • 举报
回复
从深层次讲,任何对象都要分配内存空间的,如各种类型的变量,数组等。
指针也是变量,所以它本身所占用的空间也是自动分配好的。但是如果想要
一个指针有所用途,就要让他指向某一块内存空间,而这段内存空间可以是
数组,也可以是用new或malloc申请的。

总之一句话:当所需要的空间不存在时,就需要new 或alloc。
ruihuahan 2003-08-18
  • 打赏
  • 举报
回复
new是动态分配的,在堆上的,而局部非指针变量是在堆栈上分配的,而每个线程的堆栈是有限的,所以如果你的类需要很大的内存时,最好使用new动态分配内存。
gufengduyu 2003-08-18
  • 打赏
  • 举报
回复
如果你想自己控制类的生存周期,就用new
你的函数中或者类中包含了一个类的实例a
当你的函数退出或者类销毁的时候a也被释放了
如果用new的话,除非你调用delete,否则它一直在内存里
即你要局部使用的话直接生成类实例,你要多个函数或模块共同使用的话就用动态生成


u2m 2003-08-18
  • 打赏
  • 举报
回复
那楼上的,再问一下
A a(3);
A * p = new A(4);
这两种有什么区别吗?什么时候用哪种?
  • 打赏
  • 举报
回复
指针要new
int x;调用了默认构造函数
new开辟空间的同时调用默认构造函数

你自己的类如果加了一个带参数的构造函数
默认构造函数
就行了
你就无法
A a;

class A
{
int x;
A(int t)
{
x =t;
}
}

你就不能
A a;

A * p = new A;
只能:
A a(3);
A * p = new A(4);

  • 打赏
  • 举报
回复
int x(3);
---------------------
int * p = new int(3);

u2m 2003-08-18
  • 打赏
  • 举报
回复
怎么没人帮忙??

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧