您的位置:首页 > 其它

struct与class的区别

2015-07-09 10:20 246 查看
struct与class的区别可以分以下两个方面来讨论:

一、C语言中的struct与C++中class的区别:

struct只是作为一种数据类型定义,不能用于面向对象编程。对于如下C语言片段:

struct Point
{
int x;
int y;
void print()
{
printf("Point.\n");//编译错误“函数不能作为Point结构的成员”
}
};
二、C++中的struct与C++中class的区别:

对于成员访问权限及继承方式,class中默认的是private,而struct中默认的是public。除此之外,class还可以用于表示摸板类型,struct则不行。

class访问权限 默认private,struct默认public

struct SPoint
{
int x;
int y;
void print()
{
cout<<"Point public."<<endl;
}
SPoint(int x, int y)
{
this->x = x;
this->y = y;
}
private:
void print1()
{
cout << "Point Private." << endl;
}
};

class CPoint
{
int x;
int y;
void print()
{
cout << "Point public." << endl;
}

public:
CPoint(int x, int y)
{
this->x = x;
this->y = y;
}
~CPoint(){}
void print1()
{
cout << "Point Private." << endl;
}
};
int main()
{
SPoint Sp(2,3);
CPoint Cp(2,3);
Sp.print();
Sp.print1();//函数不可访问
Cp.print();//函数不可访问
Cp.print1();
system("pause");
return 0;
}

class继承默认private,struct继承默认public

struct base
{
void print()
{
cout << "SBase:print()" << endl;
}
};

class Cderivate1 :base
{
void CDprint()
{
cout << "Cderivate1:print()";
}
};

struct Sderivate1 :base
{
void SDprint()
{
cout << "Sderivate1:print()";
}
};

class Cderivate2 :public base
{
void CDprint()
{
cout << "Cderivate2:print()";
}
};

struct Sderivate2 : private base
{
void SDprint()
{
cout << "Sderivate2:print()";
}
};

int main()
{
Cderivate1 cd1;
Cderivate2 cd2;
Sderivate1 sd1;
Sderivate2 sd2;

cd1.print();//函数不可访问
cd2.print();
sd1.print();
sd2.print();//函数不可访问
system("pause");
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: