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

本文详细介绍了过程性编程与面向对象编程的区别与联系,重点阐述了类的概念及其在C++中的应用,包括类的声明、成员函数、数据隐藏、封装、构造函数和析构函数等关键特性,并提供了类的例子和注意事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

接口:函数声明

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值