一杯清酒邀明月
天下本无事,庸人扰之而烦耳。

规则:

静态成员是所有对象共享的,所以不能在静态方法里访问非静态的元素。(因为每个对象都有自己的this指针,静态方法不是属于某个特定的对象,而是由全体对象共享的,静态成员存储地址与对象并不在一起)

非静态方法可以访问类的静态成员,也可以访问类的非静态成员。

this指针是类的一个自动生成、自动隐藏的私有成员,它存在于类的非静态成员函数中,指向被调用函数所在的对象的地址。

当一个对象被创建时,该对象的this指针就自动指向对象数据的首地址。

当我们调用一个方法时,this指针都会随着你提供的输入参数被秘密的传递给那个方法。

实例1:this指针应用

 1 #include <iostream>
 2 #include <string>
 3 
 4 using namespace std;
 5 class Pet//定义Pet类 
 6 {
 7 public:
 8     Pet(string theName);//构造器,对count进行写操作 
 9     ~Pet();//析构器,对count进行写操作  
10     
11     static int getCount();//定义静态函数,对count进行读操作 
12     
13 protected://不允许没有继承Pet类的其它类调用 
14     string name;
15 private://定义的变量和函数只服务于Pet类中的函数
16     static int count;//定义静态变量(属性) 
17 };
18 int Pet::count = 0;//注意这一句,他起码做了两件事(为count分配静态内存,初始化为0) 外部对静态属性进行声明 
19 Pet::Pet(string theName)//构造函数 
20 {
21     name = theName;
22     count++;
23     
24     cout << "一只宠物出生了,名字叫做:" << name << "\n"; 
25 } 
26  Pet::~Pet()//析构函数 
27  {
28      count--;
29      cout << "\n" << name << "挂掉了\n";
30   } 
31 int Pet::getCount()//返回count值 
32 {
33     return count;
34 }
35 
36 
37 class Dog:public Pet//定义Dog类继承于Pet类 
38 {
39 public:
40     Dog(string theName);
41 };
42 Dog::Dog(string theName):Pet(theName)//Dog的构造函数继承于Pet类中的Pet(theName)函数,即该构造函数调用时将调用Pet函数 
43 {
44     cout << "this:" << this << "\n";//打印this指针地址 
45 }
46 
47 class Cat:public Pet//定义Cat类继承于Pet类 
48 {
49 public:
50     Cat(string theName);
51 };
52 Cat::Cat(string theName):Pet(theName)//Cat的构造函数继承于Pet类中的Pet(theName)函数
53 {
54 }
55 
56 int main()
57 {
58     Dog dog("Tom");
59     Cat cat("Jerry");
60     
61     cout << "dog:" << &dog << "\n";//打印指向dog对象的this指针地址 
62     cout << "\n已经诞生了" << Pet::getCount()  << "只宠物!\n\n";
63     //如果有括号的话,编译器是在括号结束时调用dog_2与cat_2的析构函数,而没有的话,则是程序结尾处调用析构函数 
64 //    {
65         Dog dog_2("Tom_2");
66         Cat cat_2("Jerry_2");
67         
68         cout << "\n现在呢,已经诞生了" << Pet::getCount() << "只宠物!";
69 //    }
70     cout << "\n现在还剩下" << Pet::getCount() << "只宠物!";
71     
72     return 0;
73 }
posted on 2023-08-18 14:53  一杯清酒邀明月  阅读(24)  评论(0编辑  收藏  举报