标题:什么时候在创立对象时后边必须要加初始化?
取消只看楼主
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
结帖率:56.6%
已结贴  问题点数:4 回复次数:2 
什么时候在创立对象时后边必须要加初始化?
自己写了一个简单的插入排序:

#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
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
得分:0 
回复 2楼 rjsp
我写了Cha obj; 无参,难道计算机不认为我是调用无参的构造函数吗?就算是调用了默认构造函数在之后计算不出结果,也应该走无参构造函数吧?
2018-04-17 08:10
troyzyc
Rank: 1
等 级:新手上路
帖 子:108
专家分:0
注 册:2016-7-4
得分:0 
回复 5楼 rjsp
明白了,多谢大神屡次指教,顿悟的感觉!!!
2018-04-17 08:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-486124-1-1.html




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

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