C++面向对象程序设计基础知识点2

目录

1.构造函数调用方式

2.this指针的概念及作用

3.友元类简单概念

4.小总结


在学习过C语言以及c++的基础概念后相信大家对于面向过程的程序设计已经得心应手,那么今天我们所提到的就是c++编程思想中的面向对象程序设计,本篇文章将为大家介绍一些关于C++面向对象程序设计的基础知识点。

1.构造函数调用方式

我们在上一篇文章中提到构造函数及析构函数的声明方式及基本调用方式,本篇文章将为大家详细介绍构造函数的三种调用方式,此三种调用方式分别为括号法,显式法,隐式法。以下为代码实例及详解:

class person           //首先声明一个person类
{
public:
    person()           //声明person无参构造函数
{

}
    person(int m_a)    //声明person有参构造函数
{
    
}
    person(person &p)  //声明person拷贝构造函数
{

}
};
int main()      //主函数部分
{
   person p1;   //生成对象默认调用无参构造函数
   //括号法
   person p2(10); //调用有参构造函数
   person p3(p2);  //调用拷贝构造函数
   //此类方法更加便捷也更加常用
   //显式法
   person p2=person(10); //调用有参构造函数
   person p3=person(p2); //调用拷贝构造函数
   //此类方法可读性更强且更能体现封装性
   //隐式法
   person p2=10;
   person p3=p2;
   //此类方法与显式法原理相同但是隐藏了表达式

}

2.this指针的概念及作用

关于c++面向对象程序设计中的this指针,它可以抽象理解为编译器或者是c++语言中自带的一个指针,不需要用户主观进行声明。也不需要另外添加头文件。this指针的用途主要有两个,1.区分类中的同名变量,2.当作函数返回值指向自身。

下面来说一说第一个用法,假设我们在类中声明了一个有参构造函数。

class person
{
public:
    person(int m_a) //给有参构造函数传入一个外部参数 m_a
{
     m_a=m_a;  
}
public:
    int m_a;
};

在这里我们发现了一个问题,那就是我们在构造函数的形参列表里声明的变量与类中原有的变量重名,如果直接运行的话编译器会报出错误,原因是无法识别同名变量从而导致不清晰。那么解决办法就是用到刚才我们提到的this指针,具体做法如下:

class person
{
public:
    person(int m_a) //给有参构造函数传入一个外部参数 m_a
{
     this->m_a=m_a;  //这里加上一个this指针告诉编译器该变量为类中原有变量
}    //让this指针指向类中的m_a
public:
    int m_a;
};

第二个用法就是当作返回值指向自己本身,这一点与面向过程思想类似便不再过多赘述,案例如下

Point &Move(int x,int y)
{
    x+y;
return *this;
}

3.友元类简单概念

这里简单介绍一下C++面向对象程序设计中的友元类,所谓友元类,就如字面意思一样,是好朋友的意思,我们在上一篇文章中提到过类中成员的访问权限。比如说:

class person
{
public:
     int m_a;   //公共类
protected:
     int m_b;   //保护类
private:
     int m_c;   //私有类
};
void test()
{
     person p;
     cout<<P.m_a<<p.m_b<<p.m_c<<endl;
}
int main()
{
   test();
}

我们在上一篇文章中知道,在person类中的保护成员以及私有成员在类外是访问不到的,也就是上段代码中的m_b和m_c,所以测试函数test()是无法正常运行的,编译器会提醒你没有该对象的访问权限,那么解决办法 就是将测试函数test()声明为person类的友元函数,声明方式如下:

class person
{
//友元函数声明关键字为friend 声明方式为 friend+函数声明
friend void test();     //需要在类中对其进行声明,告诉编译器该函数是此类的好盆友
public:
     int m_a;   //公共类
protected:
     int m_b;   //保护类
private:
     int m_c;   //私有类
};

 void test()
{
     person p;
     cout<<p.m_a<<p.m_b<<p.m_c<<endl;
}
int main()
{
   test();
}

这样一来程序就能正常运行。

友元类大多用在继承用法中,也能方便类外对类内成员的访问,当然对于继承的相关知识,我将会后面的文章中为大家一一介绍

4.小总结

本次内容主要了讲解了c++面向对象程序设计中的一些基础知识点,主要内容即构造函数调用方式。以及this指针用途,简单介绍友元类等,本篇内容都为C++面向对象程序员设计的基本思想,若想更深的理解以及体会,还请大家在日常学习中多多努力,希望大家学有所成,最后附上本段讲解代码:
 

#include<iostream>
using namespace std;
class person          
{
    
public:
    friend void test();
    person(){}
    person(int m_a)
    {
        this->m_a = m_a;
    }
    person(person& p)  
    {}    
public:
    int m_a;   
protected:
    int m_b;   
private:
    int m_c;
};
 void test()
{
    person p;
    cout << p.m_a << p.m_b << p.m_c << endl;
}
int main()
{
    person p1;   
    person p2(10);
    person p3(p2); 
    person p2 = person(10); 
    person p3 = person(p2); 
    person p2 = 10;
    person p3 = p2;
    return 0;
}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Joker700

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值