类和对象基础

原创 2017年10月06日 11:07:55

面向对象的三大特点:封装、继承、多态

类和对象的关系
1>,类是对象的抽象,对象是类的实例化;
2>,定义一个类并没有分配实际的内存空间进行存储,而对象占有内存空间。
植物——类
松树——对象

类的声明和对象的定义
首先介绍一些基础知识
访问限定符:
public : 公有访问限定符;
private : 私有访问限定符;
protected : 受保护的访问限定符。
注:
1>,如果声明类的时候对访问权限不加以说明,则成员默认是private;
2>,public成员可以从类体外部直接访问,而private和protected不可以;
3>,访问限定符的作用域是从该访问限定符开始到下一个访问限定符或者到类体的结束右括号;
4>,访问限定符体现了面向对象的封装性。
这里简单介绍一下面向对象的封装性:将对象的行为和属性封装起来,对外代码不可见,只通过接口进行实现。

<类包括成员函数和成员变量>
成员函数 : 指把定义和原型写在类定义内部的函数。

成员函数定义在类体内部:

class Trapezium     
{
  public:
        int Area()
        {
           return ((upper+lower)*height)/2;
        }
  public:
        int upper;
        int lower;
        int height;
 }

成员函数定义在类体外部:类名+ :: (作用域解析符);来确定范围。

class Trapezium
{
  public:
        int Area();
  public:
        int upper;
        int lower;
        int height;
 }
 int Trapezium :: Area()
 {
    return ((upper+lower)*height)/2;
 }

First: 类的声明

class 类名
{
   访问限定符:
           成员函数和成员变量  
}

Second: 对象的定义

1>,类的类型已声明 (最常用)

 Time T1,T2;
 //Time为已经定义的类的类型,前面可以加也可以不加class.

2>,声明类型同时定义对象

class Time
{ 
  访问限定符:
           成员函数和成员变量  
}T1,T2;           

3>,直接定义,无类名

class 
{ 
  访问限定符:
           成员函数和成员变量  
}T1,T2;

对象大小计算 :每个对象的大小为类中所有成员变量的大小之和,遵循内存对齐原则。(这里和结构体内存对齐原则一样)

1>,结构体的首个成员在整体所占空间0偏移量的地址处;
2>,从第二个成员变量开始要对齐到对齐数的整数倍的地址处;
<对齐数 = 编译器默认的一个对齐数 与 该成员大小的较小值>
3>,结构体总大小为所有对齐数中最大对齐数的整数倍;
4>,当嵌套了结构体时,嵌套的结构体对齐到自己的最大对齐数的整数倍处,结构体的整体大小就是所有最大对齐数(含嵌套结构体
的对齐数)的整数倍。

疑问1:为什么遵循内存对齐?
1>,内存对齐可以在编译阶段优化内存存取;
2>,经过内存对齐之后,CPU的内存访问速度大大提升;

这里写图片描述

疑问2:空类对象(无成员变量的类)的大小是多少?为什么?
C++标准规定,凡是一个独立的(非附属)对象都必须具有非零大小,那么空类对象大小到底是几呢???
验证之后:空类对象的大小为1。
原因简单的说第一个就是进行占位,先分配好地址,用的时候就方便;还有就是在进行计算大小的时候,保证sizeof()分母不为0。

隐含的this指针

 class Time
 {
    public:
           void Display()
            {
              cout<<_hour<<end1;
              cout<<_minute<<end1;
              cout<<_second<<end1;
            }
    private:
           int _hour;
           int _minute;
           int _second;
 }

编译器版:

 class Time
 {
    public:
           void Display(Time* this)
            {
              cout<<this->_hour<<end1;
              cout<<this->_minute<<end1;
              cout<<this->_second<<end1;
            }
    private:
           int _hour;
           int _minute;
           int _second;
 }
  1. this指针是指向每个成员函数的指针形参, this指针是隐式的;
  2. 构造函数没有这个隐含this形参;
  3. 编译器会对成员函数进行处理,在对象调用成员函数时,对象地址作实参传递给成员函数的第一个形参this指针;
  4. this指针是成员函数隐含指针形参,编译器进行处理,不能在成员函数的形参中添加this指针的参数定义,也不能在调用时显示传递对象的地址给this指针。
版权声明:本文为博主原创文章,未经博主允许不得转载。

第十一章 类和对象

1.单词 class 类        object 对象     return 返回      programming设计,规划  ,编程     null空     initial初始化的   t...
  • qq_36074088
  • qq_36074088
  • 2016年09月08日 18:15
  • 134

Java类和对象 详解(二)

上一篇Java类和对象 详解(一)讲解了类和对象的基本概念,定义和使用,以及对象引用传递的初步分析,下面接着来讲其他内容。一、面向对象的封装性封装(encapsulation)又叫隐藏实现(Hidin...
  • wei_zhi
  • wei_zhi
  • 2016年10月07日 17:52
  • 2438

类和对象基础

1、类的定义 面向对象(Object Oriented,OO)。 起初,“面向对象”是指在程序设计中采用封装、继承、多态等设计方法。现在,面向对象的思想已经涉及到软件开发的各个方面。如,面向对象的...
  • centor
  • centor
  • 2017年07月07日 20:57
  • 93

类和对象--基础

一.类的一些基础   1.获取类名 Class myclass = [myObject class]; NSLog(@"My class is %@",[myclass className]);...
  • lexiaoyao20
  • lexiaoyao20
  • 2012年02月23日 00:15
  • 321

面向对象基础——类与对象的定义

面向对象的概念 封装性:对外部不可见。可以保护程序中的某些内容。 继承性:扩展功能的。 类与对象的关系: 定义类和对象的方法? 类图的画法:Person类图 分为三层: 第...
  • u013087513
  • u013087513
  • 2016年03月26日 11:18
  • 3374

iOS-OC中的类与对象

类是一种数据类型 类只存在源代码中,不在某个区 类是结构体的升级,用于定义变量,类一般定义在.m文件中 类的成员变量名前需要加下划线_ 类中可以添加函数 类中能在堆上定义变量,不能定义在栈上(因为栈小...
  • jialiOS
  • jialiOS
  • 2016年05月28日 15:07
  • 133

C++实验二 类与对象 (附答案)

一个关于C++当中类与对象的基础实验。
  • u010173859
  • u010173859
  • 2013年09月27日 23:58
  • 2683

Java类和对象 详解(一)

一、面向对象简述面向对象是一种现在最为流行的程序设计方法,几乎现在的所有应用都以面向对象为主了,最早的面向对象的概念实际上是由IBM提出的,在70年代的Smaltalk语言之中进行了应用,后来根据面向...
  • wei_zhi
  • wei_zhi
  • 2016年10月06日 20:48
  • 19384

类与对象总结一

万物皆对象        人类从小就不断的接触到各种各类存在世界上的各种生物,然后通过事物的公共特性,将它们归类,所以以后就不会出现见到猫叫老虎。那么我们在现实生活中,是通过具体的某个事物归纳总结它...
  • dingjunneng
  • dingjunneng
  • 2016年06月07日 15:42
  • 849

求一些C#面向对象的练习题

可以去仿写别人的程序 实在想不出什么程序 自己写程序就是最好的练习题
  • bugrnm
  • bugrnm
  • 2008年10月20日 09:05
  • 228
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:类和对象基础
举报原因:
原因补充:

(最多只允许输入30个字)