C++中的知识点记录

举报
努力变强的小C 发表于 2022/09/29 22:57:12 2022/09/29
【摘要】 C++中的知识点记录

目录

知识点一、this指针

知识点二、对象数组

知识点三、对象传参

知识点四、友元知识



知识点一、this指针

 C++中的this指针是总是指向当前对象,每当我们调研一个成员函数的时候,系统就自动把this指针作为一个隐藏的参数传给我们调用的函数,并且C++编译器,会根据this指针所指向的那个对象来确定,我们当前是该引用哪一个对象的数据成员

知识点二、对象数组

在C++中我们说的对象数组,就是指数组中的每一个元素都是对象的数组,它基本的数据类型数组是一样的,在我们使用对象数组的时候,也就只能访问单个数组元素,并且对象的指针就是用于存放该对象地址的变量,在C++中对象的指针既可以直接指向对象的成员,通过这种方法可以使这些指针可以访问对象的成员

知识点三、对象传参

在C++中对象是可以作为参数进而传递给函数的,并且这种方法与传递其他类型的数据是相同的,再向函数传递对象参数的时候,就是通过传值调用进而传递给函数的,对象指针也可以作为参数,并且可以实现传址调用 

知识点四、友元知识

含友元成员函数。在C++中友元有两种形式,一种是友元函数,也称为含有友元成员函数,另一种是友元类,友元是可以访问对象的所有数据,包含私有数据和保护数据,他使类既具有封装性的同时又具备灵活性,友元使得不同类之间的成员函数类的成员函数与一般成员函数之间可以进行数据共享,尤其是当一个函数需要访问多个类的时候,友元函数就显得非常重要,我们引入友元的另一个主要原因就是为了使我们的编程更加方便,在一些情况下,如果运算符被我们重载,就需要用到友元函数       

并且友元关系是单向的,不具备交换性,若声明了,类X是类Y的友元,这是不等于类Y一定是X的友元,这要看那类Y中是否也有相对应的声明

友元关系也不具有传递性,若类X是类Y的友元,类Y是类Z的友元,但不一定可以推出类X是内Z的友元,如果想类X是类Z的友元,应该在内Z中也做出相对应的声明

我们定义了A类

#include <iostream>
using namespace std;
using namespace std;
class B;
class A;
void Show(A&, B&);

class B
{
private:
    int score;
    friend class A;
    friend void Show(A&, B&);

public:
    B(int temp = 100) :score(temp) {}

};

接着我们定义了B类

class A
{
private:
    int value;
    friend void Show(A&, B&);

public:
    A(int temp = 200) :value(temp) {}

    void Show(B& b)
    {
        cout << value << endl;
        cout << b.score << endl;
    }
};

void Show(A& a, B& b)
{
    cout << a.value << endl;
    cout << b.score << endl;
}

int main()
{
    A a;
    B b;
    a.Show(b);
    Show(a, b);
    return 0;
}

输出结果:
200
100
200
100

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。