C++的类对象与成员

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++的类对象与成员相关的知识,希望对你有一定的参考价值。

C++的类、对象与成员

  1.声明一个类

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

 类声明的语法形式如下:

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

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

  当然,这里的publicprotectedprivate关键字可以任意换顺序,比如先声明私有成员再声明其他的也可以,每个关键字也可以出现多次,比如声明一些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 ( ) ;

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

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

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


以上是关于C++的类对象与成员的主要内容,如果未能解决你的问题,请参考以下文章

C++ 与类中的成员相同的类

c++ 中的每个对象是不是包含不同版本的类成员函数?

类的静态成员是不是可以与 C++ 中它所属的类具有相同的类型

C++三大特性---继承

C++三大特性---继承

C++ (P70—)