本文共 1774 字,大约阅读时间需要 5 分钟。
在C++编程中,static关键字用于定义静态成员变量和静态成员函数,这些成员既属于类又不属于类实例,适用于需要共享同一份数据或方法的场景。
this指针:静态成员函数无法访问非静态成员变量或函数,因为它们没有this指针。public、protected和private访问级别。静态成员可以通过以下方式访问:
obj.staticMember。Type::staticMember。友元函数是可以访问类私有成员的函数,但它不是类的成员函数。友元函数定义在类外,通常由类内调用。
类A中定义友元函数:
class A {public: friend void func(A& a) { // 可以访问A的私有成员 };} class Date {public: friend void print(Date& d) { cout << d.year << "-" << d.month << "-" << d.day << endl; } Date(int year, int month, int day) { this->year = year; this->month = month; this->day = day; }private: int year, month, day;}; Date d(2021, 3, 4);print(d); // 调用友元函数输出日期
友元类是指两个类之间互为友元的关系,友元类可以访问对方的私有成员,但反之则不行。
class A {public: class B { friend A; void func(A& a) { // 可以访问A的私有成员 } };}; class A {public: class B { friend A; void setA(A a) { a._a = 100; _sa = 200; } };private: int _a = 1; static int _sa;}; 内部类是定义在另一个类内部的类,具有特殊性:
class A {public: class B { public: B(int x) { _x = x; } void func() { cout << _x << endl; } };private: int _a = 1; static int _sa;}; 在这个问题中,需要通过内部类和静态成员实现一个累加器功能:
Sum,该类负责管理静态成员_i和_sum。Sum的构造函数初始化_sum和_i。_i和_sum,用于存储累加的结果和计数器。Sum对象时,_i加1,并将_sum累加当前_i的值。Sum_Solution,初始化静态成员并创建数组实例,返回累加结果。通过这种方式,我们可以有效地管理内部类的静态成员,并实现所需的功能。
转载地址:http://dcus.baihongyu.com/