首页 > 编程语言 >C++类&对象

C++类&对象

时间:2023-11-01 20:57:27浏览次数:34  
标签:Box 定义 对象 double 成员 C++ height Box1

C++类&对象

C++在C语言的基础上增加了面向对象编程,C++支持面向对象程序设计。类是C++的核心特性,通常被称为用户定义的类型。
类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。

  • C++类定义
    定义一个类,本质上是定义一个数据类型的模板。实际上并没有定义任何数据。也就是说,它定义了类的对象包括了什么,以及可以在这个对象上执行哪些操作。
    类定义是以关键字class开头,后跟类的名称。类的主体是包含在一对花括号中,类定义后必须跟着一个分号或者一个声明列表。例如石永红关键字class定义Box数据类型,如下所示:
class Box
{
  public:
    double length;
    double breadth;
    double height;
};

关键字public确定了类成员的访问属性。在类对象作用域内,公共成员在类的外部是可访问的。也可以指定类的成员为private或protected。

  • 定义C++对象
    类提供了对象的蓝图或模板,基本上对象是根据类来创建的,声明类的对象,就像声明基本类型的变量一样。下面的语句声明了类Box的两个对象:
Box Box1;//声明
Box Box2;

对象Box1和Box2都有各自的数据成员。

  • 访问数据成员
    类的对象的公共数据成员可以使用直接成员访问运算符(.)来访问。为了理解概念,尝试以下实例:
#include<iostream>
using namespace std;

class Box{
	public:
		double length;
		double breadth;
		double height;
};

int main(){
	Box Box1;
	Box Box2;
	double volume = 0.0;
	double volume2 = 0.0;
	Box1.height = 5.0;
	Box1.length = 6.0;
	Box1.height = 7.0;
	
	Box2.height = 10.0;
	Box2.length = 12.9;
	Box2.height = 13.9;
	
	volume = Box1.height*Box1.length*Box1.height;
	cout<<" volume of Box1:"<<volume<<endl;
	volume2 = Box2.height*Box2.length*Box2.height;
	cout<<"Volume of Box2:"<<volume2<<endl;
	return 0;
	
}

结果显示:

注意:私有成员和受保护的成员不能使用直接访问运算符(.)来直接访问。

类成员函数

类的成员函数是指那些把定义和原型写在类定义内部的函数,就像类定义中的其他变量一样。类成员函数是类的一个成员,可以操作类的任意对象,可以访问对象中的所有成员。
现在要使用成员函数访问类的成员,而不是直接访问这些类的成员。

class Box{
    public:
        double length;
        double breadth;
        double height;
        double getVolume(void);//返回体积
};

成员函数可以定义在类定义内部,或者单独使用范围解析运算符::来定义。在类定义中定义的成员函数把函数声明为内联的,即使没有使用inline标识符。所以可以按照如下方式定义volume()函数:

class Box{
  public:
    double length;
    double breadth;
    double height;
    double getVolume(void){
        return length*breadth*height;
    }

};

也可以在类的外部使用范围解析运算符::定义该函数,如下所示:

double Box::getVolume(void){
      return length*breadth*height;
    }

需要强调一点,在::运算符之前必须使用类名。调用成员函数是在对象上使用点运算符(.),这样就能操作与该对象相关的数据,如下所示:

Box myBox;//创建一个对象
myBox.getVolume();//调用该对象的成员函数

实例:

#include<iostream>
using namespace std;

class Box{
	public:
		double length;
		double breadth;
		double height;
		double getVolume(void);//成员函数声明
		void setLength(double len);
		void setBreadth(double bre);
		void setHeight(double hei);
};

//成员函数定义
double Box::getVolume(void){
	return length*breadth*height;
}

void Box::setLength(double len){
	length = len;
	
}
void Box::setBreadth(double bre)
{
	breadth = bre;
}
void Box::setHeight(double hei){
	height = hei;
}

int main(){
	Box Box1;
	Box Box2;
	double volume = 0.0;
	double volume2 = 0.0;
	//box1详述
	Box1.setLength(6.0);
	Box1.setBreadth(7.0);
	Box1.setHeight(5.0);
	//box2详述
	Box2.setLength(12.0);
	Box2.setBreadth(13.0);
	Box2.setHeight(14.0);
	
	volume = Box1.getVolume();
	cout<<" volume of Box1:"<<volume<<endl;
	volume2 = Box2.getVolume();
	cout<<"Volume of Box2:"<<volume2<<endl;
	return 0;
	
}

结果显示:

标签:Box,定义,对象,double,成员,C++,height,Box1
From: https://www.cnblogs.com/bonne-chance/p/17804065.html

相关文章

  • java new(创建)对象时结尾带上{}和不带的区别
    定义一个对象publicclassPerson{publicvoidsay(){System.out.println("hello");}}熟悉(正常)的创建对象方式Personp1=newPerson();不熟悉的创建方式Personp2=newPerson(){};那二者有什么区别?我们可以先打印出类的信息看看public......
  • C++ 记录
    STL队列(queue),一个先进先出的容器,需要用到头文件queue。函数成员名功能返回值类型que.empty()判断队列是否为空,空返回真,非空返回假boolque.size()返回队列中元素个数unsignedlonglongque.push()将元素x放进队尾voidque.front()返回队首元素qu......
  • MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。
    Buildingtheprojectsinthissolutiononeatatime.Toenableparallelbuild,pleaseaddthe"/m"switch.Buildstarted2021/3/170:22:07.Project"D:\t\node_modules\node-sass\build\binding.sln"onnode1(defaulttargets).Validat......
  • js 判断数组对象中是否含有重复的值
    //判断对象数组是否有相同属性相同:true\不相同:falsehasFun(array){returnarray.some((item,index)=>{return(array.findIndex((v,i)=>{return(i!==index&&JSON.stringify(v.item......
  • 五、Java面向对象:继承
    一、概述继承的概述:将多个类相同的部分使用同一个类括起来,其他类与这个类产生继承关系,这样其他类就包含了这个类的成员关键字:extends描述:classAextendsB(){}A:子类,派生类B:父类,超类,基类特点:  java中类与类之间只能单继承......
  • vscode使用SSH远程连接服务器并搭建c++环境
    环境:win10,vscode,一台linux服务器1.连接到远程平台在vscode上安装Remote-SSH插件,安装后左侧边栏会多出这样一个图标;点击这个图标,选择SSH右边的齿轮弹出一个窗口,选择第一个选项Host处填写远程服务器的名称(可以随便填),填写地址HostName,用户名User,端口Port。保存并刷新SSH列......
  • vue2 单页面应用兼容 ie & 对象不支持"append"属性或方法
    在平时如果用到vue2但是打开ie测试的时候发现代码没起到预期的效果(作用)的话。就要用到polyfill和browser来对你的vue代码转成es5语法啦。具体用法是:先下载polyfill和browser的js文件然后引入polyfill和browser的js文件1<scriptsrc="./graphic_js/pol......
  • C++ ITK 读写.mha 文件
    如题:#include<iostream>#include<string>#include<itkImage.h>#include<itkImageFileReader.h>#include<itkImageIOFactory.h>#include<itkMetaImageIOFactory.h>#include<itkImageFileWriter.h>intmain(){//......
  • 面向对象(OOP)08~17
    面向对象(OOP)08~171.封装​ "高内聚、低耦合",内部细节自己完成;仅暴露少量方法给外部使用。​ 属性私有,get/set//private:私有publicclassStudent{ //属性私有privateStringname;//名字privateintid;//学号privatecharsex;//性别//get......
  • obsidian实现安卓、windowl同步(Remotely Save+腾讯云对象存储)
    1obsidian安卓端下载https://mobile.softpedia.com/apk/obsidian/2同步思路本文的同步方案并不是以下方案,个人没有采用以下方案。2.1方案1:坚果云网盘方案(没采用此方案)相当于把坚果云作为一个网盘。只需要在电脑端和手机端,同时安装坚果云软件,就可以实现文件在电脑端和手机端同步......