C++之类

A)封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。
B)封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。
备注:有2层含义(把属性和方法进行封装 对属性和方法进行访问控制)

C++中类的封装
成员变量,C++中用于表示类属性的变量
成员函数,C++中用于表示类行为的函数
在C++中可以给成员变量和成员函数定义访问级别
public修饰成员变量和成员函数可以在类的内部和类的外部被访问
private修饰成员变量和成员函数只能在类的内部被访问

没有权限修饰的成员和函数默认是private的

#include <stdio.h>
#include <iostream>using namespace std;const float pi = 3.14f;struct Circle
{float r;   // 半径float s;   // 面积
};int main1_1()
{Circle c;cout << "请输入半径: ";cin >> c.r;cout << "圆的面积是: "<< c.r*c.r*pi << endl;return 0;
}// class 新的关键字,用声明类
// 在类中,成员变量 叫 属性
// 在类中,成员函数 叫 方法
class MyCircle
{
public:            // 公有属性,它所修饰的东西类内部外部都可以访问// 用来对半径进行赋值void setR(float r){m_r = r;m_s = r * r * pi;}float GetR(){return m_r;}float GetS(){return m_s;}private:           // 访问控制关键字,在它修饰下的所有东西都是只能在类的内部访问,外部不能访问float m_r;     // 半径   属性float m_s;     // 面积   属性
};int main1_2()
{// 用类来定义的变量,叫 对象,对象是类的一个实例// 用法和结构体一样MyCircle c,c1,c2,c3;c.setR(2);     // 将半径设成2c1.setR(3);c2.setR(4);c3.setR(5);cout << "半径是: " <<  c.GetR() << ", 面积是: " << c.GetS() << endl;cout << "半径是: " <<  c1.GetR() << ", 面积是: " << c1.GetS() << endl;cout << "半径是: " <<  c2.GetR() << ", 面积是: " << c2.GetS() << endl;cout << "半径是: " <<  c3.GetR() << ", 面积是: " << c3.GetS() << endl;return 0;
}// 类的访问控制
// public:   公有属性,类内部外部都可以访问
// private:  私有属性,只能在类的内部访问
// protect:  保护属性,用在继承中,也只能在类的内部访问// 结构体与类的区别// 结构体不写访问控制的情况下,默认是公有的
struct A
{int a;
};// 类中如果不写访问控制,默认的属性是私有的
class CA
{int a;
};
int main1_3()
{A a;a.a;//CA b;// b.a;return 0;
}

类的两个实际运用:
1. 学生信息:
头文件 student.h:

#ifndef __STUDNET_H__
#define __STUDNET_H__#include <stdio.h>
#include <string.h>
#include <string.h>class student
{
public:void setstu(int id, int age, char* name);void print();
private:int m_id;int m_age;char m_name[10];
};#endif

源文件 student.cpp

#include "student.h"void student::setstu(int id, int age, char* name)
{m_id = id;m_age = age;strcpy(m_name, name);
}void student::print()
{printf ("id = %d, age = %d, name = %s\n", m_id, m_age, m_name);
}

mian.cpp

#include "student.h"int main0()
{student s;s.setstu(1, 18, "wang");s.print();return 0;
}

2.平面上一点是否在圆内:
头文件 Point.h:

#ifndef __POINT_H__
#define __POINT_H__class Point
{
public:// 设置点的坐标void setXY(int x, int y);int getX();int getY();// 求当前的点和另一个点的距离的平方int distance(Point &p);private:int  m_x;   // x的坐标int  m_y;   // y的坐标
};#endif  //__POINT_H__

Circle.h:

#ifndef  __CIRCLE_H__
#define  __CIRCLE_H__
#include "Point.h"class Circle
{
public:void setCircle(int r, int x, int y);bool inCircle(Point &p);private:int m_r;     // 半径Point m_rp;  // 圆心
};#endif  // __CIRCLE_H__

源文件Point.cpp

#include "Point.h"void Point::setXY(int x, int y)
{m_x = x;m_y = y;
}int Point::getX()
{return m_x;
}
int Point::getY()
{return m_y;
}int Point::distance(Point &p)
{int dis = (m_x - p.getX())*(m_x - p.getX()) + (m_y - p.getY()) * (m_y - p.getY());// int dis = (m_x - p.m_x)*(m_x - p.m_x) + (m_y - p.m_y) * (m_y - p.m_y);return dis;
}

Circle.cpp

#include "Circle.h"void Circle::setCircle(int r, int x, int y)
{m_r = r;            // 设置半径m_rp.setXY(x, y);   // 设置圆心
}bool Circle::inCircle(Point &p)
{if (m_rp.distance(p) <= m_r*m_r) // 点p 到 圆心的长度小于等于半径return true;elsereturn false;
}

main.cpp

#include <stdio.h>
#include "Circle.h"
#include "Point.h"int main()
{Circle c;c.setCircle(20, 20, 20);Point p;p.setXY(10,20);if (c.inCircle(p)){printf ("在圆内\n");}else{printf ("在圆外\n");}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/448412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

APU(美国AMD公司研发的加速处理器)

APU(Accelerated Processing Unit)中文名字叫加速处理器&#xff0c;是AMD“融聚未来”理念的产品&#xff0c;它第一次将中央处理器和独显核心做在一个晶片上&#xff0c;它同时具有高性能处理器和最新独立显卡的处理性能&#xff0c;支持DX11游戏和最新应用的“加速运算”&am…

根本不值得一提的乒乓球国手王浩

最近在看世界乒乓球锦标赛&#xff0c;关于王浩&#xff0c;很多人都说他的技术开创了一个时代&#xff0c;而事实是王浩没有夺过任何世界性大的赛事的单打冠军&#xff0c;我所说的世界性的赛事包括&#xff1a;世界乒乓球锦标赛,奥运会&#xff0c;世界杯&#xff0c;国际乒联…

Vue.js 极简小例:表单 (输入框 input、文本域 textarea、单选框 radio、下拉菜单 selected、复选框 checkbox)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 代码&#xff1a; <template> <div > <p>---------------------------------------------------------------------…

C++之构造函数和析构函数

一、构造函数 1. 构造函数的定义&#xff1a; 1&#xff09;C中的类可以定义与类名相同的特殊成员函数&#xff0c;这种与类名相同的成员函数叫做构造函数&#xff1b; 2&#xff09;构造函数在定义时可以有参数&#xff1b; 3&#xff09;没有任何返回类型的声明。 2. 构…

显卡常识 电脑显卡基础知识普及

我们组装电脑的时候肯定需要考虑到显卡性能&#xff0c;如果电脑配置中的显卡性能不行&#xff0c;那么电脑肯定玩不了大型游戏。可能一些新电脑用户对显卡一点也不了解&#xff0c;我们下面来详细介绍一下电脑显卡的基础知识。 一、显卡简介 显卡是个人电脑最基本组成部分之一…

操纵浏览器历史记录 : popstate() 、 history.pushState() 、 window.history.pushState()

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、历史记录前进与后退 1.后退&#xff1a; window.history.back() -- 相当于用户在浏览器的工具栏上点击返回按钮&#xff1b; 2.前…

C++之拷贝函数

拷贝构造函数是一种特殊的构造函数&#xff0c;函数的名称必须和类名称一致&#xff0c;它的唯一的一个参数是本类型的一个引用变量&#xff0c;该参数是const类型&#xff0c;不可变的。例如&#xff1a;类X的拷贝构造函数的形式为X(X& x)。 以下情况都会调用拷贝构造函数…

spring Boot 学习(七、Spring Boot与开发热部署)

一、热部署在开发中我们修改一个Java文件后想看到效果不得不重启应用&#xff0c;这导致大量时间 花费&#xff0c;我们希望不重启应用的情况下&#xff0c;程序可以自动部署&#xff08;热部署&#xff09;。有以下四 种情况&#xff0c;如何能实现热部署。•1、模板引擎 – 在…

解决: Cannot find module ‘webpack-cli/bin/config-yargs‘、Error: Cannot find module ‘webpack-cli‘

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 npm 、cnpm 、node、vue 全都装上了&#xff0c;就是 webpack 装不上&#xff01;&#xff01; 最后我把整个服务器还原为初始设置了&…

路由器和交换机的区别详解

很多人对路由器和交换机混为一谈&#xff0c;甚至搞不清楚路由器和交换机有什么区别&#xff0c;有的用户还认为是一样的功能&#xff0c;看名字就知道是两种不同的产品&#xff0c;功能虽然有些类似&#xff0c;但绝对不会完全相同&#xff0c;否则就没有必要用两个全面不同的…

C++之构造函数和析构函数强化

构造与析构调用顺序: #include <stdio.h>class Test9_1 { public:Test9_1 (int a){m_a a;printf ("9_1 1111111111111111111构造函数....a: %d\n", a);}// 析构的顺序和构造的顺序相反&#xff0c;先构造的后析构~Test9_1(){printf ("9_1 1111111111111…

Oracle的逆向工程generatorConfig

<?xml version"1.0" encoding"UTF-8"?> <!DOCTYPE generatorConfigurationPUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN""http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"> <ge…

最简单、图解:阿里云服务器上装 Docker 、 CentOS上 docker安装(3分钟装完)

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 // 为了装 vue 的 webpack &#xff0c;我把整个服务器重置了。docker 也没有了&#xff0c;只好重新装 docker ... 1. 准备工作 yum …

C++之对象的动态建立和释放

new和delete的用法&#xff1a; 1&#xff09;在软件开发过程中&#xff0c;常常需要动态地分配和撤销内存空间&#xff0c;例如对动态链表中结点的插入与删除。在C语言中是利用库函数malloc和free来分配和撤销内存空间的。C提供了较简便而功能较强的运算符new和delete来取代m…

7.11牛客题(指针)

今天在牛客做错了一道题&#xff0c;在此写下感触题目如下&#xff1a;若有说明:int i, j2,*p&i;,则能完成 ij 赋值功能的语句是&#xff08;B&#xff09;。A i*p; B *p*&j; C i&j; D i**p; 分析&#xff1a;题目中&#xff0c;p指针指向i的地址&#xff0c;A选项…

gpu简介

GPU英文全称Graphic Processing Unit&#xff0c;中文翻译为“图形处理器”。GPU是相对于CPU的一个概念&#xff0c;由于在现代的计算机中&#xff08;特别是家用系统&#xff0c;游戏的发烧友&#xff09;图形的处理变得越来越重要&#xff0c;需要一个专门的图形的核心处理器…

WM有约(五):部署应用程序

WM有约&#xff08;五&#xff09;&#xff1a;部署应用程序 Written by Allen Lee 创建安装包 创建一个新的项目&#xff0c;用来部署Windows Mobile应用程序的项目模板是Other Project Types\Setup and Deployment下的Smart Device CAB Project&#xff1a; 图 1 输入项…

“ 我亦想望,如池鱼悠悠 ... “

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 // 闹钟响了&#xff0c;起床&#xff0c;洗漱完毕&#xff0c;背上电脑出门&#xff0c;到公司打卡 8&#xff1a;20 。 " 我亦想…

C++之静态成员变量和静态成员函数

静态成员变量 关键字 static 可以用于说明一个类的成员&#xff0c; 静态成员提供了一个同类对象的共享机制 把一个类的成员说明为 static 时&#xff0c;这个类无论有多少个对象被创建&#xff0c;这些对象共享这个 static 成员 静态成员局部于类&#xff0c;它不是对象成…