结构体和类操作

    一切还是有基础的好,没有基础就要学习。

    结构体和类的操作,首先建立一个控制台程序,建立一个结构体struct Point,但是要注意在结构体定义最后要有“;”否则操作不成功。在结构体中定义两个变量xy,这样我们在主函数中就可以使用结构体中的两个变量,此时在主函数中定义一个变量pt,做法为Point pt也就是说在pt中也可以包含两个可以使用的量,pt.xpt.y,并对其赋值pt.x=5pt.y=8,使用cout<<pt.x<<endl<<pt.y<<endl,编译运行可以看到输出结果。但是使用cout就要包含输出流头文件,在c语言中使用的是#include<iostream.h>,但是在进行C++操作时要用到#include<iostream>   using namespace std;

    C++结构体操作中也可以定义函数,我们可以在结构体中定义输出函数Output,随后在主函数中就不用是用cout进行输出,直接使用pt.Output();就可以达到输出的目的,运行结果符合要求。

    我们进一步进行操作,将structure Point注释,并使用类操作class Point,此时就要在类中使用public;否则编译时提示主函数中使用私有变量,无法成功编译,相当于有一个private。类中还有一个访问权限使用protected,连接父类和子类之间访问权限。其实structure也是一种类操作,只不过在class中分为私有变量和共用变量,而structure却可以进行外部变量访问。但是如果在structure中使用private:例如

struct Point

{

private:

int x;

int y;

void Output()

{

cout<<x<<endl<<y<<endl;

}

};

我们会发现提示结果和在class中使用private:有相同的提示报警信息。

    此外在类中也可以使用构造函数,,但是构造函数名要和类名一致,构造函数最重要的是构造对象本身每个类必须有一个构造函数,没有构造函数就不能创建任何对象如果没有定义构造函数C++就默认一个构造函数,但是只创建对象,而不做任何初始化操作此外还有析构函数,析构函数是在函数执行完以后进行对变量内存分配和回收,但是析构函数不允许有返回值,不允许带参数,并且一个类中只能有一个析构函数。

函数重载,

void Output()

{

cout<<x<<endl<<y<<endl;

}

void Output(int xint y)

{

this->x=x;//this指针是C++提供的一个隐含的指针,指向对象本身,代表了对象地址

this->y=y;

}这是进行函数重载操作,this->x=x,使用了this指针,如若不用该指针运行程序可以发现,运行结果是33因为void Output(int xint y)函数中只是将x赋值给了x,若要得到55则可以使用this指针,或者void Output(int xint y中的形参使用ab就能达到结果

附一函数实例代码:

#include "stdafx.h"

#include<iostream>

using namespace std;

//struct Point

class Point

{

public:

int x;

int y;

//构造函数,构造函数最重要的构造对象本身每个类必须有一个构造函数,没有构造函数就不能创建任何对象如果没有定义构造函数C++就默认一个构造函数,但是只创建对象,而不做任何初始化操作此外还有析构函数,~Point

Point()

{

x=0;

y=0;

}

Point(int aint b//该构造函数带参数

{

x=a;

y=b;

}

//析构函数,在函数执行完以后,析构函数进行对变量内存分配和回收析构函数不允许有返回值,不允许带参数,一个类中只能有一个析构函数

~Point() 

{

}

//void init() //此函数是对结构函数中的变量进行初始化操作,完成赋值

//{

// x=0;

// y=0;

//}

void Output()

{

cout<<x<<endl<<y<<endl;

}

void Output(int xint y)

{

this->x=x;//this指针是C++提供的一个隐含的指针,指向对象本身,代表了对象地址

this->y=y;

}

};

int _tmain(int argc_TCHARargv[])

{

Point pt(3,3);

pt.Output(5,5);

// pt.init();

// pt.x=5;

// pt.y=8;

// cout<<pt.x<<endl<<pt.y<<endl;

pt.Output();

return 0;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值