class 和 struct

这篇文章解决以下几个问题:

1.结构体可以被类继承吗

2.结构体变量中含有字符串,可以直接赋值吗

3.C语言中的结构体使用与C++中的使用有不同的地方吗

4.如何重载操作符


代码:(vc6.0 win32 console application)


#include "stdafx.h"
#include <stdio.h>
#include <memory.h>


typedef struct _CA
{
int a;
float b;
char sc[100];

}CA,*PCA;


class CB:public CA
{
public:
CB();
CB(CA &ca);
~CB();

operator PCA( ) const;
void operator =( const CA& ca );

int d;
float e;
char scc[100];
};


CB::CB()
{
}




CB::CB(CA &ca)
{
*(PCA)this = ca;
}


CB::~CB()
{


}


CB::operator PCA( ) const
{
return (PCA)this;


}
void CB::operator =( const CA& ca )
{
//注意此处this指针不能用static_cast转化
*(PCA)this = ca;
}


void func(PCA pca)
{
printf("%s\n",pca->sc);
}




int main(int argc, char* argv[])
{

     //演示_CA和CA是一样的
_CA ca1={1,2.0,"what"};
CA ca2={3,4.0,"isyourname"};


      //演示含有字符串的结构体赋值
CA ca3=ca2;
printf("%s\n",ca3.sc);

//演示上一次赋值后,对下一次赋值有没有副作用
ca3=ca1;
printf("%s\n",ca3.sc);

//演示'='操作符的使用  也可以看出类可以从结构体上派生
  CB cb1 = ca1;
  printf("%s\n",cb1.sc);
 

CB cb2(ca2);
printf("%s\n",cb2.sc);
 

        //演示重载操作符PCA,即函数中类实例如何直接转化成所需要类型的指针
  func(cb2);


getchar();
return 0;
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值