下面程序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) 将正确运行结果粘贴在下面
//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函数访问不了。
//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
//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
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632