C++笔记 第十六课 类的真正形态---狄泰学院

如果在阅读过程中发现有错误,望评论指正,希望大家一起学习,一起进步。
学习C++编译环境:Linux

第十六课 类的真正形态

问题:经过不停的改进,结构体struct变得越来越不像它在C语言中的样子!!!

1.类的关键字

struct在C语言中已经有了自己的含义,必须继续兼容
在C++中提供了新的关键字class用于类定义
class和struct的用法是完全相同的
class和struct有什么区别?
在用struct定义类时,所有成员的默认访问级别是public
在用class定义类时,所有成员的默认访问级别是private
在这里插入图片描述

16-1 class的初探

#include <stdio.h>
struct A
{
    // defualt to public
    int i;
    // defualt to public
    int getI()
    {
        return i;
    }
};
class B
{
public:
    // defualt to private
    int i;
    // defualt to private
    int getI()
    {
        return i;
    }
};
int main()
{
    A a;
    B b;
    
    a.i = 4;
    
    printf("a.getI() = %d\n", a.getI());
    
    b.i = 4;
    
    printf("b.getI() = %d\n", b.getI());
    
    return 0;
}

小实例:
需求:开发一个用于四则运算的类
提供setOperator函数设置运算类型
提供setParameter函数设置运算参数
提供result函数进行运算
其返回值表示运算的合理性
通过引用参数返回结果

2.类的真正形态

C++中的类支持声明和实现的分离
将类的实现和定义分开
.h头文件中只有类的声明:成员变量和成员函数的声明
.cpp源文件中完成类的其它实现:成员函数的具体实现

实例分析:Operator类的分析

#include <stdio.h>
#include "Operator.h"
int main()
{
    Operator op; //定义类的对象
    double r = 0;
    
    op.setOperator('/');
    op.setParameter(9, 3);//设置两个操作数
    
    if( op.result(r) )
    {
        printf("r = %lf\n", r);
    }
    else
    {
        printf("Calculate error!\n");
    }
    
    return 0;
}

::是运算符中等级最高的,它分为三种:
1)global scope(全局作用域符),用法(::name)
2)class scope(类作用域符),用法(class::name)
3)namespace scope(命名空间作用域符),用法(namespace::name)
他们都是左关联(left-associativity)
他们的作用都是为了更明确的调用你想要的变量,如在程序中的某一处你想调用全局变量a,那么就写成::a,如果想调用class A中的成员变量a,那么就写成A::a,另外一个如果想调用namespace std中的cout成员,你就写成std::cout(相当于using namespace std;cout)意思是在这里我想用cout对象是命名空间std中的cout(即就是标准库里边的cout)
小结
C++引进了新的关键字class用于定义类
struct和class的区别在于默认访问级别的不同
C++中类支持声明和实现的分离
在头文件中声明类
在源文件中声明类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值