类class与结构体struct的区别(一定要注意,否则你会CE的!)

chen_zhe 沙雕 2020-06-24 17:31:47 2020-06-24 17:33:17 1

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);
}
{{ vote && vote.total.up }}

共 1 条回复

root 站长

棒~