C++程序输出11

预测下列C++程序的输出。

null

问题1

#include<iostream>
using namespace std;
class Point
{
private :
int x;
int y;
public :
Point( const Point&p) { x = p.x; y = p.y; }
void setX( int i) {x = i;}
void setY( int j) {y = j;}
int getX() { return x;}
int getY() { return y;}
void print() { cout << "x = " << getX() << ", y = " << getY(); }
};
int main()
{
Point p1;
p1.setX(10);
p1.setY(20);
Point p2 = p1;
p2.print();
return 0;
}


输出:main()的第一行出现编译器错误,即“点p1;”

由于有一个用户定义的构造函数,编译器不会创建默认的构造函数(请参阅 这件事 ).如果我们从类点移除复制构造函数,程序运行良好,并将输出打印为“x=10,y=20”

问题2

#include<iostream>
using namespace std;
int main()
{
int *ptr = new int (5);
cout << *ptr;
return 0;
}


产出:5 新操作符还可以初始化基本数据类型。在上述程序中,使用新运算符将地址“ptr”处的值初始化为5。

问题3

#include <iostream>
using namespace std;
class Fraction
{
private :
int den;
int num;
public :
void print() { cout << num << "/" << den; }
Fraction() { num = 1; den = 1; }
int &Den() { return den; }
int &Num() { return num; }
};
int main()
{
Fraction f1;
f1.Num() = 7;
f1.Den() = 9;
f1.print();
return 0;
}


产出:7/9 方法Num()和Den()分别返回对Num和Den的引用。由于返回了引用,所以返回的值可以用作左值,并修改私有成员den和num。该程序编译和运行良好,但强烈反对这种类设计(参见 ).返回对私有变量的引用允许类的用户直接更改私有数据,这违背了封装的目的。

如果您发现任何答案/解释不正确,或者您想分享有关上述主题的更多信息,请发表评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞8 分享