硬核C++系列第二天

硬核C++系列第二天,第1张

今天跟着课程学习了友元和析构的一些知识

友元

友元包括两种,友元类、友元函数,不管是类还是函数都是在前面加个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;

}}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/674938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-19
下一篇 2022-04-19

发表评论

登录后才能评论

评论列表(0条)

保存