您的位置:首页 > 文旅 > 旅游 > h5网页制作模板_seo对网站的作用_网站收录_百度广告关键词价格表

h5网页制作模板_seo对网站的作用_网站收录_百度广告关键词价格表

2025/5/10 22:03:43 来源:https://blog.csdn.net/hefaxiang/article/details/146301522  浏览:    关键词:h5网页制作模板_seo对网站的作用_网站收录_百度广告关键词价格表
h5网页制作模板_seo对网站的作用_网站收录_百度广告关键词价格表

1、匿名对象

(1)用类型(实参)定义出来的对象叫做匿名对象,相比之前我们定义的  类型    对象名(实参) 定义出来的叫做有名对象

示例:

#include<iostream>
using namespace std;
class person
{
public:person(){cout << "person()的默认构造函数" << endl;}
};
int main()
{person  p;//有名对象person();//匿名对象return 0;
}

结果:

(2)匿名对象声明周期声明周期只在当前一行。如果我们定义一个对象只有当前用一下即可,那我们就可以定义匿名对象。

2、友元

(1)友元提供了一种突破类访问限定符封装的方式,友元分为:友元函数、友元类,在函数声明或者类声明的前面加friend,并且把友元声明放到一个类的里面。

示例:

友元类:

#include<iostream>
using namespace std;
class A
{//友元类声明friend class  B;
private:int _a1 = 12;int _a2 = 13;
};
class   B
{
public:void  func1(const A& aa){cout << aa._a1 << endl;cout << _b1 << endl;}void func2(const A& aa){cout << aa._a2 << endl;cout << _b2 << endl;}
private:int _b1 = 11;int _b2 = 22;
};

注意:类B是类A的友元类,如果一个普通类中有一个友元类,则该友元类的所有成员函数都是该普通类的友元函数,这些友元函数可以访问该普通类的private/protected的成员变量。

友元函数:

代码:

#include<iostream>
using namespace std;
class  B;//前置声明,否则A的友元函数声明编译器不认识B
class  A
{//友元函数声明friend   void  func(const A& aa, const B& bb);
private:int _a1=1;int _a2=2;
};
class  B
{//友元函数声明friend   void  func(const A& aa, const B& bb);
private:int _b1 = 3;int _b2 = 4;};
void func( const A&aa, const B&bb)
{cout << aa._a1 << endl;cout << bb._b1 << endl;}
int main()
{A aa;B bb;func(aa, bb);return 0;
}

结果:

(2)友元函数可访问类的私有(被private修饰)和保护(被protected修饰)成员,友元函数仅仅是一种声明,它不是类的成员函数。

(3)友元函数可以在类中任何位置声明,不受访问限定符限制。

(4)一个函数可以是多个类的友元函数

(5)友元类中的成员函数都可以是另一个类的友元函数,都可以访问另一个类的友元函数,

(6)友元类的关系是单向的,不具有交换性,比如:A类是B类的友元,但是B类不是A类的友元。

(7)友元类关系不能传递,如果A是B的友元,B是C的友元,但是A不是C的友元。

(8)友元提供了函数可以访问一个类的私有成员变量,但是友元会增加耦合度,破坏了封装,所以友元不宜多用。

总结:

(1)全局函数做友元

代码:

//全局函数做友元
#include<iostream>
using namespace std;class MyClass {
private:int secret;
public:friend void globalFriend(); // 声明全局函数为友元
};// 全局函数定义
void globalFriend() {MyClass obj;obj.secret = 42; // 可以访问私有成员cout << "obj.secret=" << obj.secret << endl;
}
int main()
{globalFriend();return 0;
}

结果:

(2)成员函数做友元

代码:

//一个类中的成员函数做另一个类的友元函数
#include<iostream>
using namespace std;class OtherClass {
public:void memberFriend(); // 成员函数声明
};class MyClass {
private:int secret;
public:friend void OtherClass::memberFriend(); // 声明其他类的成员函数为友元
};// 成员函数定义
void OtherClass::memberFriend() {MyClass obj;obj.secret = 44; // 可以访问私有成员cout << "obj.secret=" << obj.secret << endl;
}
int main()
{OtherClass   p1;p1.memberFriend();return 0;
}

结果:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com