类与对象基本概念总结

C++ (4)类与对象
(一)基本概念
  • C++世界里万物皆可“类”,对象是类的实例.比如我们有一个大学类西安工业大学北京工业大学就是大学类的两个实例.
  • 类比结构体的先进性之一:封装特性
    在这里插入图片描述
  • 从一个简单例子中看一些知识?
    判断两圆是否相交
#include <iostream>
#include <math.h>

class Point{
  public:
    void setXY(int x,int y);
    double getPointDis(Point& thr);//计算两点之间的距离
  private:
    int x;
    int y;  
};

class Circle{
  public:
    void setR(int r);//半径
    void setXY(int x,int y);
    bool isInterSection(Circle &thr);
  private:
    int r;
    Point p0;//圆心
};

void Point::setXY(int x,int y){
  this->x = x;
  this->y = y;
}

double Point::getPointDis(Point& thr){
  int dx = this->x - thr.x;
  int dy = this->y - thr.y;
  double dis = sqrt(dx*dx + dy*dy);
  return dis;
}

void Circle::setR(int r){
  this->r = r;
}

void Circle::setXY(int x,int y){
  p0.setXY(x,y);
}

bool Circle::isInterSection(Circle& thr){
  int _sumr = this->r + thr.r;//半径之和
  double dis = p0.getPointDis(thr.p0);//圆心距离
  if(dis <= _sumr)
	return true;
  else
	return false;
}
int main(){
  Circle c1,c2;
  c1.setR(1);
  c1.setXY(0,0);
  c2.setR(3);
  c2.setXY(2,2);
  
  Circle *ptr = &c1;
  
  if(ptr->isInterSection(c2))
	printf("两圆相交\n");
  else
	printf("两圆不相交\n");
  return 0;
}

(1)类的定义
在这里插入图片描述
(2)成员函数的声明与定义

  • 类内定义成员函数 & 类外定义成员函数
  • 类外定义成员函数要加上类的作用域
    在这里插入图片描述
    等等,函数体内的this->x是什么东西?隐式this指针
    我们来看一下调用时的实际过程:
    在这里插入图片描述
    在这里插入图片描述
    (3)注意存在的默认的构造函数、析构函数、拷贝构造函数
(二)总结
  • 1)类的作用域:
  • 每个类都定义了自己的作用域,类的成员(成员函数/成员变量)都在类的这个作用域内,成员函数内可以任意访问成员变量和其它成员函数
  • 对象可以通过.直接访问共有成员,指向对象的指针通过->也可以直接访问对象的共有成员
  • 在类体外定义成员,需要使用::作用解析符指明成员属于哪个类域
  • 2)类实例化对象:
  • 类只是一个模型一样的东西,限定了类有哪些成员,定义出一个类并没有分配实际的内存空间来存储它
  • 一个类可以实例化出许多对象,实例化出的对象占用实际的物理空间存储类成员变量
  • 3)类对象存储模型:
  • 每个对象的大小为类中所有成员变量的大小之和,同样遵循内存对齐原则
    在这里插入图片描述
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值