📜  C++程序的输出| 11套

📅  最后修改于: 2022-05-13 01:56:11.181000             🧑  作者: Mango

C++程序的输出| 11套

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

问题 1

#include
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() 第一行中的编译器错误,即“Point p1;”

由于存在用户定义的构造函数,编译器不会创建默认构造函数(请参阅此 GFact)。如果我们从 Point 类中删除复制构造函数,程序运行良好并打印输出为“x = 10, y = 20”


问题2



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

输出:5
new运算符还可以初始化原始数据类型。在上面的程序中,地址 'ptr' 处的值使用 new运算符初始化为 5。


问题 3

#include 
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 被修改。该程序编译并运行良好,但强烈建议不要使用这种类设计(请参阅this)。返回对私有变量的引用允许类的用户直接更改私有数据,这违背了封装的目的。