第三节 类和对象的基本概念(二)

本文介绍了C++中对象数组的概念及初始化方法,并详细解释了静态成员变量和静态成员函数的特点与用途,包括如何定义和使用这些特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

对象数组

每个数组元素都是对象的数组

myclass objs[4];   //构造函数调用四次

 

要求各个对象的数据成员不同,通过初始值表来赋值数组对象

class exam{

  int x;

public:

  exam(int n)

  {x = n;}

  int get_x()

  {return x;}

};

main()

{

  exam ob[4] = {11,22,33,44};//参数给完第一个对象用逗号隔开继续给后面的

  int i;

  for (i = 0; i < 4; i++)

  {

    cout<<ob[i].get_x()<<’’;

    cout<<endl;

    return 0;

  }

}

 

对象指针

指针往往不会让它只拿一个对象的指针,而是开一组空间

exe *p;

exe ob[2];

p=ob;  //等价于p=&ob[0];

p++;  //p指向第二个对象  移动的一个对象所占用的存储空间的字节数

 

this指针

是一个隐含的指针

 

静态成员

在该类的任何对象创建之前就存在

它不属于任何对象

定义类的哥哥对象所公有的数据

比全局变量更安全

class small_cat{

private:

  double weight;

  static double total_weight;

  static double total_number;

public:

  small_cat(double w)

  {

    weight=w;

    total_weight+=w;

    total_number++;

  }

  void display()

  {

cout<<The small_cat weights <<weight<< pounds\n;

  }

  static void total_disp()

  {

    cout<<total_number<< small_cat total weight ;

    Cout<<total_weight<< pounds<<endl;

  }

}

double small_cat:total_weight=0;   //有类名限定 不要static

double small_cat::total_number=0;:

int main()

{

  small_cat w1(1.8),w2(1.5),w3(1.7);

  w1.display();

  w2.display();

  w3.display();

  small_cat::total_disp();

  return 0;

}

 

静态成员函数

一般用于访问同一个类中的静态数据成员以维护类中对象共享的数据或全局变量

静态成员函数一般不访问非静态成员,若访问将作为参数

静态成员函数也可以使内联的

静态成员函数没有this指针

 

 

友员

有时候需要在类的外部访问类的私有成员,c++提供了友员函数的机制。

友员函数可以是不属于类的一般函数,也可以是另外一个类的成员函数,还可以是整个类

友员声明可以放在共有或私有部分

友员函数可以定义在类内或者类外

 

class girl{

  char *name;

  int age;

public:

  girl(char *n, int d)

  {

name = new char[strlen(n)+1];

strcpy(name,n);

age = d;

  }

  

  friend void disp(girl &);  //girl的友员函数disp

 

  ~girl()

  {delete name;}

};

void disp(girl &x)

{

  cout<<girl\s name is:<<x.name<<,age:<<x.age<<\n;

}

void main()

{

  girl g(chen xingwei,18);

  disp(g);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值