新手关于C语言中类(Classes)的问题,求高手!

#include<iostream.h>
class X{
int x;
public:
Y(){y=0;}
Y(int yy){y=yy;}
void prt(){cout<<y;}
};
void main()
{
X x(10),z;Y y(11);
z=x;z.prt()
z=y;z.prt()
}
输出结果是:100
我只有C语言基础,现在接触C++,还是一头雾水。特别是新加入class。我只是在网上了解了class的定义和使用。
我想问一下这个程序是怎么运行的?
class Y:public X是怎么个回事?定义了一个X类型的新class Y??
y()与y(int yy)是个怎么回事?
感激不尽!!!
学着C语言却要考C++,我也是醉了,任重而道远啊。。。。。。

#include<iostream>
using namespace std;
class X
{
int x; //定义类X的私有实例成员变量x
public:
X() {x=0;} //默认构造函数(无参数),将x初始化为0
X(int xx) {x=xx;} //重载的构造函数,将x初始化为xx
//虚函数,输出x的值,子类可以覆盖(重写)虚函数,从而实现多态
virtual void prt() {cout<<x;}
};
//类Y公共继承自类X,即Y是X的子类
class Y:public X
{
int y; //定义类Y的私有实例成员变量y
public:
//以下两行都是类Y的构造函数,它们都隐式调用了父类X
//的默认构造函数,以初始化父类的实例成员变量x(都初始化成0了)
Y() {y=0;}
Y(int yy) {y=yy;}
//这是覆盖(重写)父类的虚函数prt
void prt() {cout<<y;}
};
int main()
{
//x(10)会调用带一个参数的构造函数X(int xx),创建一个类X的对象x,
//x的成员变量x初始化为10
//z会调用默认构造函数X(),创建一个类X的对象z,
//z的成员变量x初始化为0
//y(11)会调用带一个参数的构造函数Y(int yy)(Y的),创建一个类Y的对象y,
//y的成员变量y初始化为11,同时通过调用父类X的默认构造函数,
//将父类的成员变量x初始化为0
X x(10),z;Y y(11);

//将x赋给z,调用z的成员函数prt,输出显示10
z=x;z.prt();
//将y赋给z,调用z的成员函数prt,输出显示0,
//因为调用的是父类X的prt,显示的是对象z的成员变量x的值
z=y;z.prt();
//以下新加的会输出显示11,
//因为调用的是子类Y的prt,显示的是对象y的成员变量y的值
y.prt();
cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-22
class Y:public X
这个是类的继承
X是Y的基类。
y()与y(int yy) 是两个构造函数
这个是重载。
先找本书看看基础吧。 C和C++不一样的还是很多的。追问

算了,还是买本书吧,越到后面越觉得C语言和C++差别越来越大。C语言的知识已经赶不上C++了

本回答被提问者和网友采纳
相似回答