1、class
直接先来一个class例子:
class class_name
{
int x, y;
int var;
void location(int xi, int yi)
{
x += xi * var;
y += yi * var;
}
}
接下来我们要调用类 class_name 里的函数 location :
int mian()
{
class_name name;
name.location(1, 2); // 这一行报错
std::cin.get();
}
结果显示:
error C2248: “class_name::location”: 无法访问 private 成员(在“class_name”类中声明)
因为对于“class”来说,其成员在默认情况下是私有的(private)。
接下来通过在class中使其成员公有化,代码如下:
class class_name
{
public: # 增加代码
int x, y;
int var;
void location(int xi, int yi)
{
x += xi * var;
y += yi * var;
}
}
然后再进行调用location函数就没有什么问题了。
2、struct
对比struct来说,构建一个简单的例子:
struct class_name
{
int x, y;
int var;
void location(int xi, int yi)
{
x += xi * var;
y += yi * var;
}
}
很明显,struct和class在实际应用中其实并没有很大的区别,唯一的区别就是struct本身就可以使其成员公有化,也就方便调用其成员函数。
若将struct的成员变为私有化,就只需再结构体内强调一下,如下所示:
struct class_name
{
private: // 结构体成员私有化
int x, y;
int var;
void location(int xi, int yi)
{
x += xi * var;
y += yi * var;
}
}
3、总结
struct 和 class 在作用意义上本质是一样的,两个关键字的微小区别可以相互转换。而C++中存在struct唯一的条件就是因为C++想要对C进行向下兼容,保留C中的struct。注:C中没有class。
根据每个人的使用区别可以选择自己写代码的习惯,不管是struct还是calss,最终目的是一样的,只要能运行就行!