C++学习笔记【类与对象】

1、面向对象的基本概念:

对象是现实世界中实际存在的事物,是构成世界的一个独立单位,它由数据(描述事物的属性)和作用于数据的操作(体现事物的行为)构成一个独立整体。

:在面向对象的方法中,类是具有相同属性和行为的一组对象的集合,它提供一个抽象的描述,其内部包括属性和行为两个主要部分。

抽象:是通过特定的实例抽取共同特征以后形成概念的过程。抽象化主要是为了使复杂度降低,是面向对象编程思想的本质。

 

2、面向对象的基本特征:

封装:是面向对象的核心思想,将对象的属性和行为封装起来,不需要让外界知道具体实现细节,这就是封装思想。

继承:主要描述的是类与类之间的关系,通过继承,可以在无需重新编写原有类的情况下,对原有类的功能进行扩展。

多态:指在一个类中定义的属性和方法被其它类继承后,它们可以具有不同的数据类型或表现出不同的行为。

 

 类是对某一类事物的抽象描述,是对象的模板

 对象用于表示现实中事物的个体,是类的实例


3、成员函数是如何区分不同对象的?

成员函数中会包含this指针,如编译后成员函数set_wheels()的形式如下所示:

void Car::set_wheels(int n, Car *this)                
{
	this->m_nWheels = n;
}

this指针是C++实现封装的一种机制,它将对象和该对象调用的成员函数连接在一起,使得从外部看来,每个对象都拥有自己的成员函数,因此,我们可以在函数中使用this指针访问成员变量或调用成员函数。

this指针形式:  (*this).成员变量或函数;

                           this->成员变量或函数;

this指针的作用:在函数中把this指针当参数使用;

                          从函数中返回,用作返回值;

void Car::set_wheels(int n, Car *this)                
{
	this->m_nWheels = n;
}


对于带默认参数的构造函数的定义方法及使用有两个注意事项:

1、对于带默认参数值的构造函数来说,需要防止调用的二义性。

2、构造函数中若第n个参数有默认值,则其后的所有参数都应该有默认值,若构造函数定义为如下内容,则编译出错:

Car(string con_carname = "my car name", int con_seats);

上述代码中,第一个参数有默认值,则后续所有参数均应该有默认值。

 

脚下留心:类中定义构造函数后,编译器不再提供默认构造函数

只要类中定义了一个构造函数,C++将不再提供默认的构造函数。如果在类中定义的是带参数的构造函数,创建对象时想使用不带参数的构造函数,则需要再实现一个无参的构造函数,否则编译出错

 

定义析构函数的要求:

1、函数的名称是在构造函数名称之前添加~”;

2、函数没有参数;

3、函数中不能通过return语句返回一个值;

4、一个类中只能有一个析构函数,不可重载;

 

浅拷贝:拷贝构造函数中若只完成数据成员本身的赋值,称为“浅拷贝”。

深拷贝:这种将所有数据都进行复制的拷贝构造函数称之为“深拷贝”。

 

使用友元函数有以下几点需要注意:

1、友元函数是能访问类中所有成员的函数,一个函数可以是多个类的友元函数,只需在各个类中分别说明。

2C++中不允许将构造函数、析构函数和虚函数声明为友元函数。


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值