社区
C++ 语言
帖子详情
构造函数与析构函数!
sms88
2004-01-12 09:11:09
以下程序为什么不是调用构造和析构函数2次?
#include<iostream>
using namespace std;
class stude{
public:
stude(char *str){
cout<<str<<"\n";
};
~stude(){
cout<<"delete"<<"\n";
}
};
int main()
{
stude s=stude("andy");
return 0;
}
...全文
30
17
打赏
收藏
构造函数与析构函数!
以下程序为什么不是调用构造和析构函数2次? #include using namespace std; class stude{ public: stude(char *str){ cout<<str<<"\n"; }; ~stude(){ cout<<"delete"<<"\n"; } }; int main() { stude s=stude("andy"); return 0; }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Meyer
2004-01-14
打赏
举报
回复
在C++中
Foo foo = Foo();
与
Foo foo;
foo = Foo();
有根本的不同
Foo foo = Foo(); 谓之隐式初始化
进似 Foo foo;
但Foo foo;是显示初始化
allen_zhaozhencn
2004-01-13
打赏
举报
回复
1 ,
stude s=stude("andy"); //实质上是: stude s("andy");
2 ,
Stude s;
s = stude("andy"); //此时情况上不同上面: 先构造出一个对象. 然后再进行赋值.
ZeroZZZ000
2004-01-13
打赏
举报
回复
从代码的角度看应该是调用两次,之所以是调用一次应该是编译器在编译期优化的结果,取消了中间变量study("andy")直接生成了s,
boy8765
2004-01-13
打赏
举报
回复
标记
sevencat
2004-01-13
打赏
举报
回复
我写错了,不好意思。
gradeyong
2004-01-13
打赏
举报
回复
stude s= 中,此时也调用了构造函数吗,不会吧。我觉得只调用了一次
sevencat
2004-01-13
打赏
举报
回复
stude(char *str){
cout<<str<<"\n";
};
~stude(){
cout<<"delete"<<"\n";
}
这两个函数都不一定能保证被调用。假如是全局变量的话。
liuheliaoshi7879
2004-01-13
打赏
举报
回复
该题是不调用拷贝构造函数的,因为对象=对象,这种表达式只是按对象的数据成员进行顺序赋值,没有初始化的工作,所以不调用拷贝构造函数,其它均同意楼上所说
liuheliaoshi7879
2004-01-13
打赏
举报
回复
长学问
bluebohe
2004-01-13
打赏
举报
回复
stude s=……
默认是走构造函数,并不是=操作符
stude s;
s=……
才是走=操作符
这时候如果s=stude("andy");
的话,是一次构造、一次赋值(没重载=的话走缺省拷贝构造函数)
redhat_xu
2004-01-13
打赏
举报
回复
可以使用推分配的办法.
stude *s=new stude("andy");
不过这样要自己释放内存.
deleted s;
效果和上面一样.
byyyyy
2004-01-13
打赏
举报
回复
同意
tjandy
2004-01-13
打赏
举报
回复
up 楼上的
Jinhao
2004-01-12
打赏
举报
回复
楼上都是正解,外型很像拷贝构造函数,但来得更直接,这为了提高效率
不用理解,只须死记。
Wolf0403
2004-01-12
打赏
举报
回复
stude s=stude("andy");
编译器是作为
stude s("andy"); 这样处理的吧,所以就没有一个额外的临时对象
lifanxi
2004-01-12
打赏
举报
回复
只生成了一个对象,当然只需要一次构造与析构。
shuneng
2004-01-12
打赏
举报
回复
为什么要调用两次呢?
生成对象一次,结束一次罢~~
构造函数
与
析构函数
构造函数
、
析构函数
、拷贝
构造函数
、赋值重载以及取地址重载等,而本节则主要论述前两个函数,
构造函数
和
析构函数
!关于类和对象这部分内容,是有些晦涩的,不易理解的,主要是其中要点过于琐碎,还是应该回归于书本...
C++
构造函数
与
析构函数
及调用顺序
构造函数
与
析构函数
及调用顺序
构造函数
定义特点
析构函数
定义特点
构造函数
与
析构函数
的执行顺序例题
构造函数
定义
构造函数
是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据...
深入理解C#
构造函数
与
析构函数
文章目录一、
构造函数
1、
构造函数
的概念2、
构造函数
的定义3、默认
构造函数
与有参
构造函数
4、静态
构造函数
5、静态
构造函数
和实例
构造函数
的使用二、
析构函数
三、
构造函数
与
析构函数
区别 一、
构造函数
首先,我们要...
构造函数
与
析构函数
有何不同
析构函数
:对象所在的函数已调用完毕时,系统自动执行
析构函数
。
构造函数
:是一种特殊的方法。特别的一个类可以有多个
构造函数
,可根据其参数个数的不同或参数类型的不同来区分它们 即
构造函数
的重载。 (2)作用...
【一、
构造函数
与
析构函数
】深度解析C++类的
构造函数
与
析构函数
调用机制
深度解析C++类的
构造函数
与
析构函数
调用机制,调用时机,C++拷贝
构造函数
的深拷贝与浅拷贝,并结合程序一步步解析对象生命周期,
构造函数
的参数匹配,构造与析构的顺序,重点分别解析了三种
构造函数
的调用机制。
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章