美文网首页
C++第四篇类和对象

C++第四篇类和对象

作者: GodsLeft | 来源:发表于2015-04-07 17:34 被阅读34次

成员函数

  • 当创建类A的实例的时候,以类A为样板建立实例变量,但并不从类A中拷贝所定义的方法
    1.一个类的实例的大小只是数据成员的大小,函数并不占用对象的内存空间
  • 在类体内定义的函数被默认为内联函数
  • 成员函数包含一个默认的参数this
    //包含该类的一个指针this,用以指向同一个类的不同对象 void Data::setData(Data *this,int y,int m,int d);

构造函数

  • 可采用构造初始化表进行初始化
    //其中year,month,day是Data成员变量 Data(int y,int m,int d) : year(y),month(m),day(d){}
  • 如果没有定义构造函数,系统将提供一个参数表为空的构造函数(函数体也为空)。成为缺省构造函数,不做任何具体的事情,初始值是随机的
  • 如果为类定义了构造函数,则系统不会生成默认的构造函数
  • 复制构造函数
    1.特殊构造函数,使用已经存在的对象,初始化一个新的同类对象。
    2.每一个类中都必须有一个复制构造函数,如果用户没有声明,系统自动生成一个默认的,其功能把初始值对象的每个数据成员的值都复制到新建立的对象中
    3.形参是类的对象返回值是类的对象,都会调用复制构造函数
    //复制构造函数一般形式 类名::类名(const 类名 &引用对象名){ //函数体 }
    //默认的复制构造函数 Test a1; Test a2(a1);
    4.在C++中,两个同类对象之间可以相互赋值。C++编译程序会为每个类定义一个隐含的赋值运算符(=)重载函数,将一个对象的数据成员值一一赋给另一对象的对应数据成员
    5.问题:深复制与浅复制,解决方案:自定义复制构造函数

析构函数

  • 每一个类都必有一个析构函数,如果用户没有声明,系统自动生成一个默认析构函数Test a;Test b;那么析构的顺序是先b后a,是因为对象的建立是在栈区(我觉的是这样的)?如果类中含有new的东西,要自己析构。

成员对象的构造与析构

  • 构造时先成员对象的构造函数,然后自己的构造函数
  • 析构相反
  • 成员对象的构造顺序与他们的声明顺序一致,而与初始化列表无关(要想到原因)

静态成员

  • 静态数据成员:必须进行初始化,初始化只能在类体外进行,不能在构造函数中初始化
  • 静态成员函数:在静态成员函数中可以直接引用静态数据成员,不能直接引用非静态数据成员,因为非静态成员函数有一个this指针,而静态成员函数没有,使用时直接使用类名调用静态成员

常对象

类名 const 对象名或者const 类名 对象名,它的数据成员值在对象整个生存期间不能改变。
const太乱了,且暂无太大用处,日后再说!!

其他

  • 在类体中不允许对数据成员进行初始化
  • C++支持两种多态:编译时多态,运行时多态
    1.编译时多态:通过函数重载实现的,重载的函数在编译时就可以确定选用那个函数
    2.运行时多态:通过虚函数实现,借助抽象类和动态联编

相关文章

  • C++第四篇类和对象

    成员函数 当创建类A的实例的时候,以类A为样板建立实例变量,但并不从类A中拷贝所定义的方法1.一个类的实例的大小只...

  • C++零基础教程之类和对象初识

    C++ 类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核...

  • C++面向对象

    C++类和对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心...

  • [C++之旅] 7 C++类和对象

    [C++之旅] 7 C++类和对象 类和对象 类:相当于一个种类,以狗狗为例,狗就是一个类,狗这个类里包含无数种不...

  • C++ — 类 & 对象超详解

    C++ 类 & 对象 C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ ...

  • C++系列之面向对象

    C++类&对象 C++类定义 类&对象详解 概念描述类成员函数[https://www.runoob.com/cp...

  • 一、类和对象

    *************************C++ 第一天 类和对象********************...

  • C++类和对象

    类定义: 类实例化对象:从栈中实例化,从堆中实例化。 访问限定符:public 公有的protected 受保护的...

  • C++类和对象

    C++ 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为...

  • C++ 类和对象

    序言 1、类的构成1.1 从结构到类1.2 类的构成 2、成员函数的声明2.1 普通成员函数形式2.2 将成员函数...

网友评论

      本文标题:C++第四篇类和对象

      本文链接:https://www.haomeiwen.com/subject/ziqaxttx.html