【C++】类与对象6:内部类与匿名对象

前言

今天来学习内部类与匿名对象

内部类

概念:如果一个类定义在另一个类的内部,这个内部类就叫做内部类

内部类是一个独立的类,它不属于外部类,更不能通过外部类的对象去访问内部类的成员。外部类对内部类没有任何优越的访问权限。

注意:内部类就是外部类的友元类,参见友元类的定义,内部类可以通过外部类的对象参数来访问外部类中的所有成员。但是外部类不是内部类的友元。

特性:

  1. 内部类可以定义在外部类的public、protected、private都是可以的。
  2. 注意内部类可以直接访问外部类中的static成员,不需要外部类的对象/类名。
  3. sizeof(外部类)=外部类,和内部类没有任何关系
class A {
private:
	static int k;
	int h;
public:
	class B // B天生就是A的友元
	{
	public:
		void foo(const A& a)
		{
			cout << k << endl;//OK
			cout << a.h << endl;//OK
		}
	};
};
int A::k = 1;
int main()
{
	A::B b;
	b.foo(A());

	return 0;
}

匿名对象

详细内容看代码中的注释

class A
{
public:
	A(int a = 0)
		:_a(a)
	{
		cout << "A(int a)" << endl;
	}

	~A()
	{
		cout << "~A()" << endl;
	}
private:
	int _a;
};

class Solution 
{
public:
	int func(int n) {
		cout << "int func(int n)" << endl;
		//...
		return n;
	}
};

int main()
{
	// 有名对象
	A aa1;
	

	// 匿名对象
	// 生命周期只在当前一行
	A();
	A(10);

	A aa2(10);

	Solution sl;
	sl.func(10);

	Solution().func(1);
	//方便调用之类的应用

	return 0;
}

结语

关于类和对象的初步学习到这里就结束了 我们下次见~~

你可能感兴趣的:(C++知识点,c++,算法,开发语言)