c++学习5 2020-01-25

本文深入解析C++中类的概念,包括类与面向对象的关系、定义、使用形式、访问修饰符、友元以及注意事项。通过实例代码演示类的创建与调用,探讨public、private和protected的区别,以及如何通过友元降低封装强度。

内容

一.类与面向对象的关系

面向对象是一种编程思想,而类是一种语法。
而这个语法是实现这个编程思想的基础

二.定义

是具有相同属性行为对象的集合

解释:比如人是一个类,相同属性就是能直立行走,行为就是能做饭,对象就是每个人,比如小明。
学完类之后,我们就知道这个相同属性大概指的是类里面的数据成员,行为就是函数成员。

三.使用形式

class cPeople//class加上类的名字
{
    public://是访问修饰符,下面会解释
    int age;//数据成员
    void fun()//函数成员
    {
        cout<<age<<endl;
    }
    
};//注意这里有分号
int main()
{
    cPeople cpeople;
    cpeople.age = 13;
    cpeople.fun();
    system("pause");
    return 0;
}

通过上面使用以及已有知识我们可以得到如下结论

结构体是一个特殊的类,类的调用也和结构体基本完全一样。

甚至是指针操作

cPeople*p = new cPeople;
    p->age = 14;
    p->fun();

四.访问修饰符

1.public

使类内成员对外均可见。大体表现为,自定义函数可见,以外的类可见,主函数可见。c++的结构体默认是public

2.private

只能使类内成员可见,即私有的。不加访问修饰符时的类就默认是private

3.protected

使类内及子类(继承)可见,即受保护的。

继承在后面的知识点中会讲到

class cPeople
{
    private:
    int age;
    void fun()
    {
        cout<<age<<endl;
    }
    
};
int main()
{
    cPeople cpeople;
    cpeople.age = 13;
    cpeople.fun();
    system("pause");
    return 0;
}

比如这段代码就会报错,因为这里都用private修饰了,所以age以及fun都不能在外界被访问到

五.友元

友元是针对protected和private的,可以降低类的封装强度(这句话纯属个人看法),关键字是friend

使用示例1:友元函数

class cPeople
{
    private:
    int age;
    void fun()
    {
        cout<<age<<endl;
    }
    friend void fun1();//这里声明fun1函数是友元函数
    
};
void fun1()
{
    cPeople cpeople;
    cpeople.age = 10;//这里就可以访问了
    cpeople.fun();
}
int main()
{
    fun1();
    system("pause");
    return 0;
}

这样就不会报错了。
也就是说:

类内成员对于友元函数相当于public

使用示例2:友元类

class cPeople
{
    private:
    void fun()
    {
        cout<<10<<endl;
    }
    friend class cPeople1;//声明这里是友元类
    
};
class cPeople1
{
    cPeople cpeople;
    void fun1()
    {
        cpeople.fun();//这里就可以访问了
    }
    
};

这样就不会报错了。
也就是说:

类内成员对于友元类相当于public

六.注意点

1:使用保护成员有两种方法:①继承 ②友元。
使用私有成员只有一种方法:友元。
2:友元破坏了类的封装性,能不用就不用
3:还可以通过接口函数返回私有成员的值或直接设私有成员的值
(接口函数暂时不需掌握)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值