weixin_52609982
2021-05-27 20:41
采纳率: 100%
浏览 42

看一下这道题吧 C++类与对象设计

下面程序sy2_1.cpp中用ERROR标明的语句有错,不删除和增加代码行,改正错误语句,使其正确运行。

//sy2_1.cpp
#include<iostream>
using namespace std;
class Aa
{
   public:
	   Aa(int i=0){a=i; cout<<"Constructor "<<a<<endl; }
	   ~Aa( ){ cout<<"Destructor "<<a<<endl; }
      void print( ){cout<<a<<endl;}
   private:
	   int a;
};
int main( )
{
Aa al(1),a2(2);
al.print( );
cout<<a2.a<<endl; //ERROR
	return 0;
}

(1) 写出修改后的正确语句


(2) 解释错误原因


(3) 将正确运行结果粘贴在下面
 

  • 好问题 提建议
  • 收藏

4条回答 默认 最新

  • 答题大神 2021-05-27 20:45
    已采纳
    //sy2_1.cpp
    #include<iostream>
    using namespace std;
    class Aa
    {
       public:
    	   Aa(int i=0){a=i; cout<<"Constructor "<<a<<endl; }
    	   ~Aa( ){ cout<<"Destructor "<<a<<endl; }
          void print( ){cout<<a<<endl;}
       public:
    	   int a;
    };
    int main( )
    {
    Aa al(1),a2(2);
    al.print( );
    cout<<a2.a<<endl; //ERROR
    	return 0;
    }

    代码如上,你在类中定义了一个私有的属性,导致mian函数访问不了。

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • CSDN专家-link 2021-05-27 20:47
    //sy2_1.cpp
    #include<iostream>
    using namespace std;
    class Aa
    {
       public:
    	   Aa(int i=0){a=i; cout<<"Constructor "<<a<<endl; }
    	   ~Aa( ){ cout<<"Destructor "<<a<<endl; }
          void print( ){cout<<a<<endl;}
            int GetA() {return a;}
       private:
    	   int a;
    };
    int main( )
    {
    Aa al(1),a2(2);
    al.print( );
    cout<<a2.GetA()<<endl;
    	return 0;
    }
    

    因为a是类的私有成员,外部不能直接访问,需要增加相应的获取函数才可以,或者把属性改成public
     

    评论
    解决 1 无用
    打赏 举报
  • Basesson 2021-05-27 21:02
    //sy2_1.cpp
    #include<iostream>
    using namespace std;
    class Aa
    {
       public:
    	   Aa(int i=0){a=i; cout<<"Constructor "<<a<<endl; }
    	   ~Aa( ){ cout<<"Destructor "<<a<<endl; }
          void print( ){cout<<a<<endl;}
       private:
    	   int a;
    };
    int main( )
    {
    Aa al(1),a2(2);
    al.print( );
    a2.print( ); //原来cout<<a2.a<<endl;
    	return 0;
    }

    (1)只改变语句cout<<a2.a<<endl;为a2.print();

    (2)Aa类中a是私有成员,不能直接访问,就是不能直接用'.'运算符访问

    (3)输出结果

    Constructor 1
    Constructor 2
    1
    2
    Destructor 2
    Destructor 1

    评论
    解决 1 无用
    打赏 举报
  • 有问必答小助手 2021-05-28 11:18

    您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

    如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

    ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题