社区
新手乐园
帖子详情
关于析构函数的一个小问题……
z1058017535
2012-03-01 11:23:58
class Apple{
int i;
public:
Apple(int n):i(n){}
~Apple(){
cout << "Apple No." << i << " destructed" << endl;
}
};
析构函数不带任何参数,他是如何将参数传递给变量i的
...全文
142
9
打赏
收藏
关于析构函数的一个小问题……
class Apple{ int i; public: Apple(int n):i(n){} ~Apple(){ cout << "Apple No." << i << " destructed" << endl; } }; 析构函数不带任何参数,他是如何将参数传递给变量i的
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
轻机枪
2012-03-03
打赏
举报
回复
class A{
static void call(void){}
void fun(void){}
}a;
A::call();//静态void成员函数才是无参数。
a.fun();//普通void成员函数是单参数,this指针隐式传递。
oldm4n
2012-03-02
打赏
举报
回复
访问,是的
输出,未必
[Quote=引用 2 楼 z1058017535 的回复:]
引用 1 楼 justkk 的回复:
不是析构函数传给变量i,而是他访问成员变量i,获取i的值
怎么访问 具体点吧 是不是对象中每个变量都可以通过这样访问,输出
[/Quote]
z1058017535
2012-03-02
打赏
举报
回复
那this指针和构造函数有关系吗
letmegocc
2012-03-02
打赏
举报
回复
正解。
[Quote=引用 6 楼 rabbitlbj 的回复:]
通过隐藏的this指针,析构函数时成员函数,编译器给所有成员函数都传递了一个隐藏的this指针作为参数,这个指针指向自己,当然可以访问自身的成员,
楼主可以这样写
~Apple(){
cout << "Apple No." << this->i << " destructed" << endl;
[/Quote]
RabbitLBJ
2012-03-02
打赏
举报
回复
通过隐藏的this指针,析构函数时成员函数,编译器给所有成员函数都传递了一个隐藏的this指针作为参数,这个指针指向自己,当然可以访问自身的成员,
楼主可以这样写
~Apple(){
cout << "Apple No." <<
this->i
<< " destructed" << endl;
justkk
2012-03-01
打赏
举报
回复
输出成员变量i的值。。
z1058017535
2012-03-01
打赏
举报
回复
在这个过程里析构函数到底干嘛了啊
z1058017535
2012-03-01
打赏
举报
回复
[Quote=引用 1 楼 justkk 的回复:]
不是析构函数传给变量i,而是他访问成员变量i,获取i的值
[/Quote]
怎么访问 具体点吧 是不是对象中每个变量都可以通过这样访问,输出
justkk
2012-03-01
打赏
举报
回复
不是析构函数传给变量i,而是他访问成员变量i,获取i的值
析构函数
和拷贝构造函数
析构函数
和拷贝构造函数 ,学习C++的朋友可以看看……
用c++类模板,实现的单链表基本操作
#include "stdafx.h" #include #include using namespace std; template struct LNode { T data; LNode *next; }; template class LinkList { public: LinkList(){L = 0;}//构造函数 ~LinkList();//
析构函数
,销毁单链表 void CreateList_L(int n);//构造单链表 bool IsEmpty() const{return L->next == 0;}//判断单链表是否为空 int GetElem_L(int i,T &e) const;//当第i个元素存在时,其值赋给e int ListInsert_L(int i,T &e);//在第i个位置插入元素e ……………………
浅析:类只能有
一个
析构函数
类的构造函数与
析构函数
都是与类同名(
析构函数
需要加上'~'),没有返回值的;而构造函数是可以有参数的,但是
析构函数
是不能有参数的。 我们知道类可以有多个构造函数,这些构造函数是重载函数的关系,也就是说函数名都是相同的,区别它们主要靠参数的不同(参数个数和参数类型)。 但是由于
析构函数
是没有参数的,那么从而无法通过参数的不同来达到重载多个
析构函数
的目的,从而
析构函数
只能有
一个
。
析构函数
是由系
析构函数
学习笔记
析构函数
:名字和类名相同,在前面加‘~’,没有参数和返回值,
一个
类最多只有
一个
析构函数
。
析构函数
在对象消亡时自动被调用,可以定义
析构函数
在对象消亡前做善后工作,比如释放分配的空间等。如果定义时没有写
析构函数
,编译时自动生成缺省
析构函数
,缺省
析构函数
什么也不做,定义了
析构函数
,编译器将不会自动生成 class String{ private: char *s; public: String(){ s = new char[10];
关于
析构函数
Q1:
析构函数
是干什么的?
A1:
析构函数
用来释放对象所分配的资源。举例来说,Lock 类可能锁定了
一个
信号量,那么
析构函数
将释放该信号量。最常见的例子是,当构造函数中使用了new,那么
析构函数
则使用delete。
Q2:对象的析构顺序?
A2:与构造函数相反,先构造的后析构。如:
一个
对象数组构造顺序是0,1,2……9,析构顺序则为9,8……0
Q3:可以重载
析构函数
吗?
A3:NO!类只能有
一个
析构函数
,无参无返回值。
析构函数
是系统自动调用,不
新手乐园
33,321
社区成员
41,774
社区内容
发帖
与我相关
我的任务
新手乐园
C/C++ 新手乐园
复制链接
扫一扫
分享
社区描述
C/C++ 新手乐园
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章