C++中的class与struct几乎没有任何区别,只在默认访问权限与继承方式上略有不同
继承在这里略过,因为几乎不会用到(除非你写个上3000行的大型工程)
默认访问权限: 先来举个例子
#include <iostream>
using namespace std;
class test{
int x;
int y;
};
test a;
int main(){
cout<<a.x;
}
看上去没问题?然而会CE
这是因为类不能像struct一样访问成员及成员函数,他的成员(member)都是私有(private)的,而结构体都是公有(public)的;类的成员只能由类里面的函数对其修改和访问;
要想访问类的成员,只需要在前面加个public,要想把结构体的成员变成不可访问即私有的,可以使用private;
e.g:
#include <iostream>
using namespace std;
class test{
public:
int x;
int y;
};
test a;
int main(){
cout<<a.x;
}
当然,如果将某个运算符或函数声明为该类的友元(friend),则无论是私有还是公有,这个函数或运算符都可以对其进行访问;
要声明友元,只需要在该函数或运算符声明时在函数返回类型前加一个friend即可;
e.g:
#include <iostream>
using namespace std;
class test{
private:
int x;
int y;
friend void out(test a);
};
void out(test a){
cout<<a.x<<' '<<a.y;
}
test a;
int main(){
out(a);
}
共 1 条回复
棒~