| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1618 人关注过本帖
标题:一个有意思的问题
只看楼主 加入收藏
邓士林
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:淮河河畔
等 级:贵宾
威 望:61
帖 子:2392
专家分:13384
注 册:2013-3-3
收藏
得分:4 
构造函数可以有多个,但是析构函数就有一个,构造函数起到对象初始化的作用,构造函数是一种特殊的成员函数,不需要用户来调用它,而是建立对象时自动执行。构造函数必须与类名同名,不具有任何类型也不返回值。析构函数也不是收回内存的,二十在撤销对象占用的内存前完成的一些清理工作。

Maybe
2013-03-09 11:45
木容木水
Rank: 2
等 级:论坛游民
帖 子:44
专家分:25
注 册:2013-2-24
收藏
得分:0 
学习学习。。。。
2013-03-09 14:56
wsws23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:107
注 册:2012-3-13
收藏
得分:0 
回复 11楼 邓士林
好吧 我表示你理解错了 我的意思了
我说的是 有没有可能可以不调用构造函数,而调用析构函数呢
2013-03-09 19:18
wsws23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:107
注 册:2012-3-13
收藏
得分:0 
你们可以试试这个程序:
#include<iostream>
using namespace std;
class Time{
public:
    int hour;
    int minute;
    int sec;
    void Show()
    {
        cout<<hour<<":"<<minute<<":"<<sec<<endl;
    }
    Time(int h,int m,int s);
    Time(){}
    ~Time(){
    cout<<"调用了析构函数:"<<endl;
    }
};
Time::    Time(int h,int m,int s):hour(h),minute(m),sec(s)
{
    cout<<"调用了构造函数;"<<endl;
}
class Stu{
private:
    int num;
    float f;
    void Show()
    {
        cout<<num<<":"<<f<<":"<<endl;
    }
};
int main()
{
    Time t[50]={Time(34,21,56),
        Time(24,21,56),
        Time(4,1,56),
        Time(14,21,56)};
    return 0;
}
2013-03-09 19:22
Merry_sf
Rank: 2
等 级:论坛游民
帖 子:30
专家分:24
注 册:2012-12-9
收藏
得分:1 
new和delete是恩爱的一对
2013-03-09 19:28
wsws23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:107
注 册:2012-3-13
收藏
得分:0 
回复 15楼 Merry_sf
但为什么程序运行只有4个构造函数,而有50个析构函数呢
2013-03-09 20:01
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:10 
以下是引用wsws23在2013-3-9 20:01:56的发言:

但为什么程序运行只有4个构造函数,而有50个析构函数呢

你在默认的Time()构造函数中写上输出信息,再看看就知道了。

授人以渔,不授人以鱼。
2013-03-09 20:05
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
这个主题,请其他版主考虑转移到C++板块吧。

授人以渔,不授人以鱼。
2013-03-09 20:06
wsws23
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:105
专家分:107
注 册:2012-3-13
收藏
得分:0 
回复 18楼 TonyDeng
Time::    Time(int h,int m,int s):hour(h),minute(m),sec(s)
{
    cout<<"调用了构造函数;"<<endl;
}
已经写了啊
2013-03-09 20:22
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
默认构造函数,没有形参的那个!

授人以渔,不授人以鱼。
2013-03-09 20:23
快速回复:一个有意思的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031780 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved