问问建设网站的人,系统设置友情链接有什么作用,做网站需要多少费用,公司图案图片大全前言#xff1a;内部类#xff0c;顾名思义是定义在类中的类#xff0c;许多人会以为它属于外部的类#xff0c;实际上并不是#xff0c;它们是两个独立的类#xff0c;但是内部类受外部类类域的限制。 目录 一.概念二.特性1.内部类和外部类相互独立2.内部类是外部类的友…前言内部类顾名思义是定义在类中的类许多人会以为它属于外部的类实际上并不是它们是两个独立的类但是内部类受外部类类域的限制。 目录 一.概念二.特性1.内部类和外部类相互独立2.内部类是外部类的友元类 三.举例 一.概念 如果一个类定义在另一个类的内部这个类就叫做内部类。但是内部类是一个独立的类它不属于外部的类更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。 class A {
public:class B {private:int _b 2;};
private:int _a 1;
};int main()
{A aa; //A类实例化对象aa//B bb; //报错B类受A类类域限制A::B bb; //B类实例化对象bbreturn 0;
}二.特性 1.内部类可以定义在外部类的publicprotectedprivate都是可以的。 2.注意内部类可以直接访问外部类中的static成员不需要外部类的对象/类名。 3.sizeof(外部类) 外部类和内部类没有任何关系证明了它们是两个独立的类。 4。内部类是外部类的友元类因而内部类可以通过外部类的对象参数来访问外部类中的所有成员但是外部类不是内部类的友元。 1.内部类和外部类相互独立
class A {
public:class B {private:int _b 2;int _c 3;};
private:int _a 1;
};int main()
{cout sizeof(A) endl;cout sizeof(A::B) endl;return 0;
}控制台输出如下 可以看到B为A的内部类但是A的内存为4个字节B的内存为8个字节。说明A和B是独立的类。 2.内部类是外部类的友元类
class A {
public:class B {publicvoid FuncB(){A aa; // 在B类中调用A类aa._a 2; //访问A类成员变量}private:int _b 2;};void FuncA() {B bb;// bb._b 2; A不是B的友元类不能通过B对象参数访问B中成员}
private:int _a 1;
};三.举例 以牛客网的一个题目超链接为例展示内部类的用处 题解 涉及知识点构造函数静态成员内部类 class Solution {class sum{public:sum() //构造函数{ _ret _tmp;_tmp;}};
public:int Sum_Solution(int n) {sum arr[n];return _ret;}static int _ret; //静态成员变量static int _tmp;
};
int Solution::_ret 0; //静态成员变量在类外定义初始化
int Solution::_tmp 1;文末BB对哪里有问题的朋友尽管在评论区留言若哪里写的有问题也欢迎朋友们在评论区指出博主看到后会第一时间确定修改。最后制作不易如果对朋友们有帮助的话,希望能给博主点点赞和关注.