C++的类、对象与成员

C++的类、对象与成员

1.声明一个类

类是用户自定义的类型,如果程序中要用到类,必须先声明定义。

类声明的语法形式如下:

class 类名称
       {
       public:
                   公有成员(外部接口)
       protected:
                   保护型成员
       private:
                   私有成员
       }

Class为关键字, 声明一个类时要用到它 。

当然,这里的public、protected和private关键字可以任意换顺序,比如先声明私有成员再声明其他的也可以,每个关键字也可以出现多次,比如声明一些public的成员,后面又出了个public声明了另一些成员,也是可以的,但是一般我们还是按照上面的形式来声明类。

2、创建一个对象

定义一个对象时,开头用类名,空一格,再编写要定义的对象名即可。

如:Computer  ThinkPad;

类是创建对象的模板,一个类可以创建多个对象,每个对象都是类类型的一个变量;创建对象的过程也叫类的实例化。每个对象都是类的一个具体实例(Instance),拥有类的成员变量和成员函数。

与结构体一样,类只是一种复杂数据类型的声明,不占用内存空间。而对象是类这种数据类型的一个变量,占用内存空间。

类与对象的区别:

类只是个抽象名词,而对象则是实际的个体。

3、对象与类里成员的关系

对象可以用点运算符“.”来访问该对象的数据成员并给它们赋值,使用时不能遗漏。

如:ThinkPad . CPU

注意:

》不要混淆类和对象,不要给类赋值。

》对象只能类中已经存在的成员。

4、类成员的访问控制

protect,public,private 的区别?

public是这个程序的每一处都能访问,无论是在本类内还本类外

protected则是在本类内和友类,子类中才能访问

private则只能在本类内才能访问,其它地方则不能

public修饰的成员变量

在程序的任何地方都可以被访问,就是公共变量的意思,不需要通过成员函数就可以由类的实例直接访问

private修饰的成员变量

只有类内可直接访问,私有的,类的实例要通过成员函数才可以访问,这个可以起到信息隐藏

protected是受保护变量

类内和子类可直接访问,也就是说,基类中有protected成员,子类继承于基类,那么也可以访问基类的protected成员,要是基类是private成员,则对于子类也是隐藏的,不可访问

5、成员函数的声明和定义

每个成员函数都有它的声明部分和定义部分。

声明部分仅是说明该函数的参数类型以及返回值类型

定义部分则是对函数的功能进行了实现

类是一种数据类型,它类似于普通的数据类型,但是又有别于普通的数据类型。类这种数据类型是一个包含成员变量和成员函数的一个集合。

类的成员变量和普通变量一样,也有数据类型和名称,占用固定长度的内存空间。但是,在定义类的时候不能对成员变量赋值,因为类只是一种数据类型,本身不占用内存空间,而变量的值则需要内存来存储。

类的成员函数也和普通函数一样,都有返回值和参数列表,它与一般函数的区别是:成员函数是一个类的成员,出现在类体中,它的作用范围由类来决定;而普通函数是独立的,作用范围是全局的,或位于某个命名空间内。

但当成员函数定义在类外时,就必须在函数名前面加上类名予以限定。

::被称为域解析符(也称作用域运算符或作用域限定符),

用来连接类名和函数名,指明当前函数属于哪个类。

成员函数必须先在类体中作原型声明,然后在类外定义,也就是说类体的位置应在函数定义之前,否则编译时会出错。

虽然成员函数在类的外部定义,但在调用时会根据在类中声明的函数原型找到函数的定义(函数代码),从而执行该函数。

6、普通内联函数

当定义了一个函数后,编译器就会在内存中为其创建一个指令集,当我们条用这个函数地,程序就会跳转到指令集处。当该函数运行完毕后,程序又会返回到原来执行调用该函数语句的下一行执行。   假如对该函数执行上百次调用,就要来回跳转上百次,这会影响到程序的执行效率。

C++中解决的方法,是使用关键字inline声明函数,如:

inline  int  func ( ) ;

则编译器将不会创建真正的函数,而是将这个内联函数的所有代码复制到调用函数中,这样程序在执行该调用函数时就不需要来回跳转,自然就提高了程序运行的效率。

不过,假如调用内联函数也超过上百次时,其代码要复制上百次,这样增大了代码的体积,会降低代码执行的效率。

所以说这是一把双刃剑,如果函数很小,多次复制也增加没多少体积,可以视情况适当使用内联函数。

时间: 2024-09-27 08:57:55

C++的类、对象与成员的相关文章

引用成员变量 和 类对象做成员变量

注意: 1. 引用成员变量 必须在构造函数的初始化列表中进行初始化 2. 引用成员变量 并不为这个变量新辟空间:类对象做成员变量则是要对其新辟一段空间的. 如下代码中,使用date1做参数初始化person_ref和person_obj.person_ref的birth字段date1为同一个地址空间,而person_obj的birth字段则是新辟了一段空间. #include <iostream> using namespace std; class Date { int month, yea

类对象作为成员

类对象内部嵌套类对象,被嵌套的对象成为内嵌对象.内嵌对象是该类对象的组成部分,当创建该对象时,其内嵌对象也被自动创建. C++中通过构造函数的初始化表为内嵌对象初始化.组合类的带有初始化表的狗仔函数的定义格式为: 类名::构造函数名(全部参数表):内嵌对象1(参数表1),内嵌对象2(参数表2),... {   构造函数体  }: 声明格式为: 类名::构造函数名(全部参数表): 组合类构造函数的执行顺序为: 1)按内嵌对象的声明顺序依次调用内嵌对象的构造函数: 2)执行组合类本身的构造函数.

类和对象:成员属性、成员方法 — 学习笔记3

类成员  类成员的访问控制PHP5中对类成员属性或成员方法的访问控制,是通过在其前面添加关键字 public(公有).protected(保护)或 private(私有)来实现的,如果没有设置这些关键字,则该成员方法被默认设置为 public. 类的访问控制权限具体应用规则如下:·由 public 所定义的类成员可以在任何地方被访问.·由 protected 所定义的类成员可以被其他所在类的子类和父类访问.·由 private 所定义的类成员只能被其所在类访问. 成员属性 在类中定义的变量称为成

【IOS 开发】Object - C 面向对象 - 类 , 对象 , 成员变量 , 成员方法

. 一. 类定义 类定义需要实现两部分 : -- 接口部分 : 定义类的成员变量和方法, 方法是抽象的, 在头文件中定义; -- 实现部分 : 引入接口部分的头文件, 实现抽象方法; 1. 接口部分定义 (1) 接口部分定义格式 接口部分定义格式 : @interface className : superClassName { type _variableName; ... ... } - (type) methodName : type parameterName; @end -- 接口定义

面向对象、类与对象、成员与局部变量、封装、private、构造函数、this、static、extends、super、final、abstract、interface、多态、内部类、异常【5】

  本文原创作者:pipi-changing本文原创出处:http://www.cnblogs.com/pipi-changing/ 本文版权归作者和博客园共有,未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接 ,否则保留追究法律责任的权利. 面向对象概念 理解面向对象 面向对象是相对面向过程而言 面向对象和面向过程都是一种思想 面向过程 •强调的是功能行为 面向对象 •将功能封装进对象,强调具备了功能的对象. 面向对象是基于面向过程的. 面向过程   在一个结构体中定义窗口的大小

c++类 用冒号初始化对象(成员初始化列表)

c++类 用冒号初始化对象(成员初始化列表) 成员初始化的顺序不同于它们在构造函数初始化列表中的顺序,而与它们在类定义中的顺序相同 #include<iostream> int n=0; using namespace std; class Cbox{ int a ; int b ; int c ; public: int g ; Cbox():a(n++),c(n++),b(n++){} ~Cbox(){cout<<a<<" "<<b&

福利-&gt;KVC+Runtime获取类/对象的属性/成员变量/方法/协议并实现字典转模型

我们知道,KVC+Runtime可以做非常多的事情.有了这个,我们可以实现很多的效果. 这里来个福利,利用KVC+Runtime获取类/对象的所有成员变量.属性.方法及协议: 并利用它来实现字典转模型. 废话不多说,直接上代码: 1.工具类(其实就是NSObject的一个分类)头文件 1 #import <Foundation/Foundation.h> 2 3 @interface NSObject (YSRuntime) 4 5 /** 6 返回当前类的属性数组 7 8 @return 属

Python全栈--9.1--面向对象进阶-super 类对象成员--类属性- 私有属性 查找源码类对象步骤 类特殊成员 isinstance issubclass 异常处理

上一篇文章介绍了面向对象基本知识: 面向对象是一种编程方式,此编程方式的实现是基于对 类 和 对象 的使用 类 是一个模板,模板中包装了多个“函数”供使用(可以讲多函数中公用的变量封装到对象中) 对象,根据模板创建的实例(即:对象),实例用于调用被包装在类中的函数 面向对象三大特性:封装.继承和多态 本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 注意点: self ,我们讲过了,self = 对象,实例化后的对象调用类的各种成员的时候的self就是这个对象. 而且我们也讲过了

C++ Primer 学习笔记_22_类与数据抽象(8)--static 成员变量、static 成员函数、类/对象的大小

一.static 每个static数据成员是与类关联的对象,并不与该类的对象相关联!非static数据成员存在于类类型的每个对象中,static数据成员独立该类的任意对象存在. static成员函数没有this形参,它可以直接访问所属类的static成员,但是不能直接使用static成员! 1.static 成员变量 对于特定类型的全体对象而言,有时候可能需要访问一个全局的变量.比如说统计某种类型对象已创建的数量. 如果我们用全局变量会破坏数据的封装,一般的用户代码都可以修改这个全局变量,这时可