| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1828 人关注过本帖
标题:什么时候在创立对象时后边必须要加初始化?
只看楼主 加入收藏
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
结帖率:56.6%
收藏
已结贴  问题点数:4 回复次数:5 
什么时候在创立对象时后边必须要加初始化?
自己写了一个简单的插入排序:

#include<iostream>
using namespace std;

class Cha
{
    public:
        Cha();  //如果我不写这个默认构造函数,那么main函数中Cha obj; 就没有问题;可是我一写上这句,就在 main函数中Cha obj; 这句出错。但是 写为Cha obj(5);就没问题了,这是为什么?为什么一定要加一个初始赋值?
        Cha(int a=5);
        
        void chasort();
        ~Cha();
        void Show();
    private:
        int *p;
        int n;
};

Cha::Cha()
{
   
}

Cha::Cha(int a)
{
    cout<<"输入数据元素个数n=";
    cin>>a;
    n=a;
    p=new int [n];
    cout<<"依次输入数据内容:";
    for(int i=0;i<n;i++) //初始化了一组数据
        cin>>p[i];
}

void Cha::chasort()
{
    int i,j,t,temp;
    for(i=1;i<n;i++)
    {
        for(j=0;j<=i-1;j++)
        {
            t=p[i];
            temp=i;
            if(p[i]<p[j])
            {
                while(i>=j+1)
                {
                    p[i]=p[i-1];
                    i--;
                }
                i=temp;
                p[j]=t;
            }

        }
    }
}

Cha::~Cha()
{
    delete[]p;
    cout<<"释放该组数据"<<endl;
}

void Cha::Show()
{
    for(int i=0;i<n;i++)
        cout<<p[i]<<" ";
    cout<<endl;
}

int main()
{
    Cha obj;   //这句总是出错
    obj.chasort();
    obj.Show();
    return 0;
}
搜索更多相关主题的帖子: 初始化 obj int cout 数据 
2018-04-16 21:52
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:4 
对于 Cha obj; 这句,编译期猜不出你是想调用无参数的那个构造函数,还是缺省参数为5的那个函数
2018-04-17 00:13
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
收藏
得分:0 
回复 2楼 rjsp
我写了Cha obj; 无参,难道计算机不认为我是调用无参的构造函数吗?就算是调用了默认构造函数在之后计算不出结果,也应该走无参构造函数吧?
2018-04-17 08:10
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
回复 3楼 troyzyc
为什么?
Cha(int a=5); 的意思就是 用户不给参数的情况下自动给一个参数5 ,也就是 Cha obj; 等同于 Cha obj(5);
2018-04-17 08:18
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
换句话说,假如 Cha obj; 应该调用无参构造函数的话,那么 Cha(int a=5); 中这个缺省函数什么时候起作用?
2018-04-17 08:22
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
收藏
得分:0 
回复 5楼 rjsp
明白了,多谢大神屡次指教,顿悟的感觉!!!
2018-04-17 08:31
快速回复:什么时候在创立对象时后边必须要加初始化?
数据加载中...
 
   



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

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