C++ 类 & 对象

来源:互联网 发布:怎样修改淘宝折扣限额 编辑:程序博客网 时间:2024/06/18 09:10

http://www.runoob.com/cplusplus/cpp-classes-objects.html

C++ 类 & 对象
C++支持面向对象程序设计。类是C++的核心特性。

C++类定义
类定义以关键字class开头,后跟类的名称。
关键字public确定了类成员的访问属性。

定义C++对象

访问数据成员
类的对象的公共数据成员可以使用直接成员访问运算符(.)来访问。
私有的成员和受保护的成员不能使用直接成员访问运算符 (.) 来直接访问。

类&对象详解
类成员函数;指哪些把定义和原型写在类定义内部的函数,
类访问修饰符:
1、公有成员public:公有成员在程序中类的外部是可访问的。
2、私有成员private:私有成员变量或函数在类的外部是不可访问的,甚至是不可查看的。只有类和友元函数可以访问私有成员。默认情况下,类的所有成员都是私有的。
3、保护成员protected:保护成员变量或函数与私有成员十分相似,但保护成员在派生类中是可访问的。

继承中的特点
有public,protected,private三种继承方式。
1.public 继承:基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:public, protected, private
2.protected 继承:基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:protected, protected, private
3.private 继承:基类 public 成员,protected 成员,private 成员的访问属性在派生类中分别变成:private, private, private
但无论哪种继承方式,以下两点都没有改变
1、private成员只能被本类成员和友元访问,不能被派生类访问。
2、protected成员可以被派生类访问

C++类的构造函数
类的构造函数是类的一种特殊的成员函数,它会在每次创建类的新对象时执行。
构造函数的名称与类的名称是完全相同的,并且不会返回任何类型,也不会返回 void。构造函数可用于为某些成员变量设置初始值。
带参数的构造函数
默认的构造函数没有任何参数,但如果需要,构造函数可以带有参数,在创建对象时就会给对象赋初始值。
使用初始化列表来初始化字段

类的析构函数
类的析构函数是类的一种特殊的成员函数,他会每次删除创建的对象时执行。
析构函数的名称与类的名称是完全相同的,只是在前面加了个波浪号(~)作为前缀,它不会返回任何值,也不能带有任何参数。析构函数有助于在跳出程序(比如关闭文件、释放内存等)前释放资源。

C++ 拷贝构造函数

C++友元函数
类的友元函数是定义在类外部,但有权访问类的private成员和protected成员。尽管友元函数的原型在类的定义中出现过,但友元函数并不是成员函数。
友元可以是一个函数,该函数被称为友元函数;友元也可以是一个类,该类被称为友元类,在这种情况下,整个类及其所有成员都是友元。
如果要声明函数为一个类的友元,需要在类定义中该函数原型前使用关键字friend

c++内联函数
通常和类放在一起使用。
如果想把一个函数定义为内联函数,则需要在函数名前面放置关键字 inline,在调用函数之前需要对函数进行定义。如果已定义的函数多于一行,编译器会忽略 inline 限定符。

C++ this指针
在 C++ 中,每一个对象都能通过 this 指针来访问自己的地址。this 指针是所有成员函数的隐含参数。因此,在成员函数内部,它可以用来指向调用对象。
友元函数没有 this 指针,因为友元不是类的成员。只有成员函数才有 this 指针。

C++指向类的指针
一个指向 C++ 类的指针与指向结构的指针类似,访问指向类的指针的成员,需要使用成员访问运算符 ->,就像访问指向结构的指针一样。与所有的指针一样,您必须在使用指针之前,对指针进行初始化。

c++类的静态成员
我们可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。
静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化,

静态成员函数
如果把函数成员声明为静态的,就可以把函数与类的任何特定对象独立开来。静态成员函数即使在类对象不存在的情况下也能被调用,静态函数只要使用类名加范围解析运算符 :: 就可以访问。
静态成员函数只能访问静态成员数据、其他静态成员函数和类外部的其他函数。
静态成员函数有一个类范围,他们不能访问类的 this 指针。您可以使用静态成员函数来判断类的某些对象是否已被创建。
静态成员函数与普通成员函数的区别:
静态成员函数没有 this 指针,只能访问静态成员(包括静态成员变量和静态成员函数)。
普通成员函数有 this 指针,可以访问类中的任意成员;而静态成员函数没有 this 指针。