class 和 struct

来源:互联网 发布:广东省网络医院 后窖 编辑:程序博客网 时间:2024/06/06 19:04

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

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
原创粉丝点击