【c++ primer】第十章 对象和类

一,过程性编程和面向对象编程

     1)采用过程性编程方法,首先考虑要遵循的步骤,然后考虑如何表示这些数据。

     2) 采用面向对象编程,首先从用户角度考虑对象,描述对象所需要的数据,以及描述用户与数据交互所需要的操作。完成对接口的描述后,需要确定如何实现接口和数据存储,最后使用心得设计方案创建出程序。

二,抽象和类

     1)类:将抽象转换为用户定义类型的C++工具,将数据表示和操纵数据的方法组合成一个整洁的包。

     2)类包括:类声明:数据成员的方式描述数据部分,成员函数的方式描述公有接口

                         类方法定义:描述如何实现类成员函数

     3)数据隐藏:将数据放在类的私有部分

           封装:隐藏对象的属性和实现细节,仅对外开发公有接口

     4)成员函数:定义时使用 :: 标识函数所属的类;可以访问类的private组件

                             void  stock::buy(double price) // buy函数具有类作用域,其他成员函数不用:: 就可以访问

     5)public:定义的函数或成员变量可以被任何方法访问

           protect:只可以被本类中方法或派生类中的方法访问

           private:只能被本类中方法访问

     6)类例子:

#include <iostream>
#include <cstring>
class student
{
private:
    char *name;
    int  num;  
    double average_score;
    int count;
public:
    student(char *m_name,int m_num,double m_average_score,int m_count);
    student();
    ~student();
    void update(char *m_name,int m_num,double m_average_score,int m_count);
    void show();
};

student::student(char *m_name,int m_num,double m_average_score,int m_count)
{
    name=m_name;
    num=m_num;
    average_score=m_average_score;
    count=m_count;
}
student::~student()
{
}
student::student()
{
}
void student::update(char *m_name,int m_num,double m_average_score,int m_count)
{
    name=m_name;
    num=m_num;
    average_score=m_average_score;
    count=m_count;
}
void student::show()
{
   using std::cout;
   using std::endl;
   cout<<"name:"<<name<<endl;
   cout<<"num:"<<num<<endl;
   cout<<"average_score:"<<average_score<<endl;
   cout<<"count:"<<count<<endl;
}
 int main()
{
   using std::cout;
   char *m_name="tianshuai";
   student *s=new student(m_name,01,98.8,5);//new申请 返回指针
   s->show();
   s->update("xiaoming",02,99.6,10);
   s->show();
   
   return 0;
}

       7)使用类注意的地方:

           1,构造函数和析构函数没有返回类型

           2,一般程序不能直接访问数据成员,只能通过成员函数来访问数据成员

           3,构造函数时候,不要将类成员名称用作构造函数的参数(m_value)

           4,不能使用对象调用构造函数,因为构造函数构造出对象之前对象不存在

           5,通常不应该在代码中显式调用析构函数,对象被删除后调用析构函数

三,this指针

       this指针用来指向,调用该方法的对象。指向被调用函数所在的类实例的地址

       每个成员函数都有一个this指针,指向调用对象

       *this 表示对象本身

四,对象数组    

       默认构造函数(default constructor)就是在没有显式提供初始化式时调用的构造函数。它由不带参数的构造函数,或者为所有的形参提供默认实参的构造函数定义。如果定义某个类的变量时没有提供初始化式就会使用默认构造函数。

       当程序创建没有被显式初始化的类对象时,总是调用默认构造函数。

       接口: 函数声明

       类作用域:成员变量不能在声明中初始化

      

        

       


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值