类与对象总结

一、类的定义。

具有相同性质和功能的东西构成的集合称为类。类是抽象的,当属性赋给具体值,方法有具体内容时,才能成为对象,对象是类中可操作的具体化数据。

类定义的一般形式:

class<类名>

{

  public:

     公有段数据成员和成员函数;(类内类外均可见)

  protected:

     保护段数据成员和成员函数;(只在类内和该类的派生类中可见)

  private:

     私有段数据成员和成员函数;(只能在类内可见)

};

注意:结尾的分号一定要写。关键字struck也可以定义类,但不特别指出时,所有的成员都是公有的。当把私有段写在最前面时,private可以省略。

当成员函数在类外定义时,函数头形式为:返回类型类名::函数名(参数表)。简单的成员函数可以在类内定义,此时编译器当做内联函数处理。

成员函数有两个作用:一是操作数据成员,包括访问和修改数据成员;二是用于协同不同的对象操作,传递消息。成员函数通过参数与其他对象协同操作。类的成员函数可以调用类的成员函数。

类的数据成员除了基本类型外,还可以是数组,结构,类等自定义的数据类型。

二、访问对象成员。

使用对象包括访问对象的数据成员和调用成员函数。类中的成员函数可以使用自身不同性质的数据成员和调用成员函数。对象成员的访问形式与访问结构形式相同,运算符‘.’和‘->’用于访问对象成员。

例:用指针访问对象成员

#include<iostream>

using namespace std;

class Tclass

{public:

   int x,y;

   voidprint(){cout<<x<<","<<y<<endl;}

};

int add(Tclass*ptf){return (ptf->x+ptf->y);}

int main()

{

Tclass test,*pt=&test;//说明一个对象test和对象指针pt

pt->x=100;//用对象指针访问数据成员

pt->y=200;

pt->print();//用对象指针调用成员函数

test.print();

test.x=150;

test.y=450;

cout<<"x+y"<<add(&test)<<endl;//把对象地址传给指针参数

}

this指针:C++提供的隐含指针参数,当一个对象调用类的成员函数时,对象的地址被传给this指针。它是一个隐含指针,不能显式说明,但可以在成员函数中显式使用。上面的Tclass的成员函数print可以写成:

voidTclass::print(){cout<<this->x<<","<<this->y<<endl;};

this指针的显式使用主要在运算符重载、自引用等场合。它是一个常指针,一旦被初始化之后,获取了对象的地址,指针值就不能再被修改和赋值,以保证不会指向其他对象。

三、构造函数和析构函数

构造函数是用于创建对象的特殊成员函数。当创建对象时,系统自动调用构造函数。构造函数的作用是:为对象分配空间;对数据成员赋初值;请求其他资源。构造函数名与类名相同。构造函数可以有任意类型的参数,但不能有返回类型。

与其对应的是析构函数,析构函数没有参数,也没有返回类型。其作用是在程序结束时自动调用删除对象以释放对象所占用的空间。

它们的原型:类名::类名(参数表);

                   类名::~类名();

注意:构造函数和析构函数不应该被定义在私有部分。

带参数的构造函数可以在建立一个对象时,用指定的数据初始化对象的数据成员。

构造函数仅用于创建对象和数据的初始化,对象的构造次序和析构次序是相反的。如果对象是由new运算符动态创建的,delete运算会自动调用析构函数。由new运算符动态创建的对象如果不用delete释放,那么即使建立对象的函数执行结束,系统也不会调用析构函数,会导致内存泄漏。

重载构造函数是指一个类中具有多个构造函数,创建对象时会根据需要匹配其中的构造函数调用。例如:

class date

{

public:

date();

date(int);

date(int,int);

date(int,int,int);

~date();

……;

voidf()

{

date d;

date d1(2000);

date d2(2000,1);

dated3(2000,1,1);

}

复制构造函数

要求有一个类类型的引用参数:类名::类名(const类名&引用名,…);调用时机:当说明语句建立对象时,可以调用复制构造函数进行初始化,另外,当函数具有类类型传值参数或者函数返回类类型值时,都需要调用复制构造函数,完成局部对象的初始化的工作。

浅复制和深复制

浅复制:复制构造函数避免了不同对象共享内存的错误,这是深复制;对应于系统做的简单数据复制,为浅复制。

类的其他成员

常成员。在C++定义中,常成员用const约束,常数据成员是指数据成员在实例化被初始化后约束为只读;常成员函数是指成员函数的this指针被约束为指向常量的常指针,在函数体内不能修改数据成员的值。

常对象。即在定义对象的说明语句以const作前缀。这个对象的全部数据成员在作用域中约束为只读。

静态成员。当类成员冠以static声明时,称为静态成员。“静态”是指它的作用域局部于类。一个类可以创建多个对象,静态成员为此提供了一种同类对象的共享机制。

静态成员函数。当一个成员函数冠以static声明时,为静态成员函数。静态成员函数提供了一个不依赖于类数据结构的共同操作,它没有this指针。因为静态成员函数只能访问类的静态数据成员,所以设计静态成员函数与静态数据成员可协同操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Python中,类是用来表示具有相同属性和方法的对象的集合。我们在使用类时,需要先定义类,然后再创建类的实例,通过类的实例就可以访问类中的属性和方法了。 在Python中,我们使用class关键字来定义类。类的定义的语法如下: ``` class ClassName: """类的帮助信息""" # 类文本字符串 statement # 类体 ``` 其中,ClassName是类的名称,类的帮助信息是类的文档字符串,可以提供关于类的描述和使用方法。 在类体中,我们可以定义类的属性和方法,以及其他需要的语句。类的属性是类的数据成员,它存储类的状态信息;类的方法是类的函数成员,用来定义类的行为和操作。 在创建类的实例时,我们可以使用类的名称后面加上括号的方式来调用类的构造函数,从而创建类的实例。通过类的实例,我们可以访问类的属性和方法,使用点操作符来访问。 总结一下,Python中的类对象的定义与使用包括以下步骤: 1. 使用class关键字来定义类,指定类的名称和类的文档字符串。 2. 在类的体中,定义类的属性和方法,以及其他需要的语句。 3. 使用类的名称后面加上括号的方式来调用类的构造函数,创建类的实例。 4. 通过类的实例,使用点操作符来访问类的属性和方法。 在Python中,类表示具有相同属性和方法的对象的集合。在使用类时,需要先定义类,然后再创建类的实例,通过类的实例就可以访问类中的属性和方法了。 在Python中,类的定义使用class关键字来实现,语法如下:class ClassName: “”“类的帮助信息”“” # 类文本字符串 statement # 类体 Python类的定义和使用 一、前言二、定义类三、创建类的实例四、“魔术”方法——_ init _()五、创建类的成员并访问1.创建实例方法并访问2.创建数据成员并访问 六、访问限制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值