C++struct结构体的用法

1. struct声明

typedef 的声明方式

struct Person{           // Peson 为结构体标志
  int age;
  string name;
}person_a, person_b;     // 声明之后直接创建变量
struct Person person_c;  // 需要的时候创建

typedef 的声明方式

typedef struct {
  int age;
  string name;
}Person;
// 这里 `Person` 不是变量,而是类型名
Person person_d;
// 也可以通过这种方式创建变量

一般情况下结构体标志, 结构体成员列表, 变量名列表一般要有两个.

2. C和C++结构体的区别

C++ 的结构体可以包含函数, 与 class 的区别是, struct 的所有成员都是 public的.

3. this 指针

它是指向本类对象(或体结构体变量)的指针,它的值是当前被调用的成员函数所在的对象的起始地址。*this 就是 this 所指向的结构体变量。return *this 就是返回当前结构体变量值 .

4. 运算符重载

c++ 预先定义的操作符(如>, +)的操作类型只能是基本数据类型(如 int), 自定义类型需要类似的运算时需要重载. 运算符重载的格式如下:

函数类型 operator 运算符名称(形参表列){对运算符的重载处理}

const Person& operator=(const Person& person_x)
{
    age = person_x.age;
    name = person_x.name;
}

例子:

#include<iostream>
using namespace std;
struct Complex
{
 double real,imag;
 Complex(double r=0,double i=0)  {   real=r;   imag=i;  }
 Complex operator + (Complex &c2);//声明运算符的"+"函数
  void display();
};
Complex Complex::operator+(Complex &c2)   //在结构体外定义结构体的成员函数用::
{
 Complex c;
 c.real=real+c2.real;
 c.imag=imag+c2.imag;
 return c;
}

void Complex::display()
{ cout<<"("<<real<<","<<imag<<"i)"<<endl;}

istream & operator >>(istream & input,Complex &c)  //重载>>运算符用于输入数据,因结构体里变量是公有成员,不用声明为友元函数,可直接引用成员
{input>>c.real>>c.imag; return input;}

ostream & operator <<(ostream & output,Complex &c) //重载<<运算符用于输出数据
{output<<"("<<c.real<<"+"<<c.imag<<"i)"; return output;}

int main()
{
 Complex c1(3,4),c2(5,-10),c3;
 c3=c1+c2;
 cout<<"c1=";
 c1.display();
 cout<<"c2=";
 c2.display();
 cout<<c3;   //和 c3.display();等价
  return 0;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值