类与对象2
开发工具与关键技术:VS2015与 C++
作者:谢钟焕
撰写时间:2019/06/06
访问对象成员:
公有成员是提供给外部接口,类外用“.”和“->”运算符访问对象成员。
使用指针访问对象成员:testClass *p; p -> print(1,2);
this指针:公有成员函数中存在隐藏的一个this指针,当该函数使用const修饰的时候将不能改变this指针里面的对象成员数据。
class testClass{
testClass(){x = 0;y = 0;};
//已经使用了const修饰x++,y++会报错。
public: void print()const{x++;y++;};
int x,y;};
构造函数和析构函数:
构造函数:
- 构造函数是用与创建对象的特殊成员函数,当创建对象时,系统自动调用构造函数
- 构造函数的作用是:为对象分配空间;对数据成员赋值;请求其他资源。
- 没有用户定义的构造函数时,系统自动提供缺省版本的构造函数。
- 构造函数名与类名相同:类名
- 构造函数可以重载
- 构造函数可以有任意类型的参数,但没有返回类型
析构函数:
- 析构函数是用于取消对象的成员函数,当一个对象作用域结束时,系统自动调用析构函数。
- 析构函数的作用是进行清除对象,释放内存等。
- 用户没有定义析构函数时,系统提供缺省版本的析构函数。
- 析构函数名为:~类名。
- 析构函数没有参数,也没有返回类型。
构造函数原型:类名::类名(参数表);
析构函数原型:类名::~类名();
例子:
头文件定义部分:
class testClass{
testClass();
~testClass();};
cpp定义部分:
testClass:: testClass()
{cout << “无参数的构造函数” << endl;}
testClass:: ~testClass()
{cout << “析构函数” << endl;}
带参数的构造函数:带参数的构造函数在对象建立时,以特定的数据初始化对象数据成员。
重载构造函数:
class test
{
test();
test(int x);
test(int x,int y);
}
拷贝构造函数:
1.拷贝构造函数用一个已有同类的数据对正在建立对象进行数据初始化
2.C++为类提供默认版本的拷贝构造函数
3.程序员可以定义用户版本的拷贝构造函数
语法形式:类名::类名(const 类名& 引用名,…);
使用拷贝函数的时机:
- 用已有对象初始化创建新对象;
- 函数的类类型实参初始化形参时,要调用赋值构造函数
- 函数返回类类型时,通过拷贝构造函数建立临时对象
默认的构造函数可以完成对象的数据成员值简单的复制。
对象的数据资源是由指针指示的堆时,默认复制构造函数仅作指针值复制。
静态成员:
- 关键字static 可以用于说明一个类的成员,静态成员提供了一个同类对象的共享机制。
- 把一个类的成员说明为static时,这个类无论有多少个对象被创建,这些对象共享这个static成员。
- 静态成员局部于类,它不是对象成员
静态数据成员的声明与初始化:
class testClass3
{ static int num;
testClass3() { };
testClass3(int i) {num = I; };
void print(){cout << num << endl;};};
//在cpp文件中初始化静态数据
int testClass3::num = 0;
void main()//调用
{ testClass3 test(2); test.print();}
静态成员函数:
- 静态成员函数关键字:static
- 静态成员函数提供不依赖于类数据结构的共同操作,他没有this指针
- 在类外调用静态函数用” 类名::”作限定词,或通过对象调用
class testX{
int a;
public:
static void fun(int a,testX *p);};
void fun(int a,testX *p)
{
p -> a = a;
}
上一篇: 来!认识一下强大的Annotation
下一篇: linux系统下文件的特殊权限