今天跟着课程学习了友元和析构的一些知识
友元
友元包括两种,友元类、友元函数,不管是类还是函数都是在前面加个friend。
UE4里面会有大量友元。
封装起来很好用.
友元函数也可也对自己来使用,讲师在这里就采取了这样的例子。
对自己使用有个好处可以方便来调用,坏处就是破坏了它的封装性。
#include
using namespace std;
class T3{
public:
friend void count(T3&T)
{
T.hello();
cout << T.a;
cout << T.b;
}
private:
int a;
int b;
void hello(){
a= 0;
b = 10;
}
};
int main() {
T3 v;
count(v);
}
上面这个是对自己友元,为了调用自身的私有成员变量
友元类的 *** 作是可以直接在下面直接通过上面被友元的来创建一个类,然后调用函数或者进行其他 *** 作。
然后因为程序是逐条进行的,所以在使用友元类之前要声明好,被友元的类(被友元这个词是我自己说的,也就是写了friend所在的类)
友元类
#include
using namespace std;
class a2;
class a1 {
public:
friend class a2;
void hello() {
cout << "ok";
}
a2 w;
void ok() {
w.test01();
}
};
class a2 {
public:
friend class a1;
void test01(){
cout << "helo";
}
void hello1() {
Class.hello();
}
a1 Class;
};
int main() {
a2 a2;
a2.hello1();
}
上面这个例子是不同类进行友元的写法,声明友元后,可以在类中创建友元对象
--------------------------------------------------------------
今天还学了构造和析构函数,
构造函数简单理解就是给类的成员进行初始赋值,基本写法就是这样,可以在类外来实现,也可也在类内来写。
A();//类内
A::A(){ //类外
a = 2;
b = 3;
}
也可也这样来写
A::A(int c,int d) {
a =c;
b = d;
}
A C(6, 7);
析构的写法也一样,就可能要多加一个判断是否清空
A::~A()
{
if (t3) {
delete t3;
t3 = NULL;
}}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)