C++:对象成员方法的使用

news2024/11/23 18:52:38
首先复习一下const :

//const:

    //Complex* const pthis1 = &ca;  //约束指针自身 不能指向其他对象
    // pthis1 = &cb;      err
    //pthis1->real;
    //const Complex* const pthis1 = &ca;//指针指向 指针自身 都不能改
    //pthis1->real;   只可读 不可写

    //const Complex cc{5,6};   当前对象为常对象(属性值不能改变)
    //Complex* pthis3 = &cc;  err   pthis3指向cc 可以改变cc的值
    // Complex* const pthis4 = &cc;    err  const约束指针的自身 我们需要约束指针的指向
    //const Complex* const pthis4 = &cc;     OK

 

C++类的编译:

1.识别属性

2.函数名,返回类型 函数形参 形参个数  

3.改写 :标识符和类型里面设计的属性标识符相同时加this指针 

1.普遍方法与const成员函数

示例:

class Complex
{
private:
    int real;
    int image;
public:
    Complex(int r = 0, int i = 0) :real(r), image(i)
    {

        cout << "Create Complex: " << this << endl;
        Print();
    }
    ~Complex()
    {
        cout << "Destroy Complex: " << this << endl;
    }


    //函数内部的方法
    //void Print(const* Complex * const this)
    void Print() const //常方法   
    {
        cout << "Real= " << this->real << "Image= " << this->image << endl;
        int x = this->GetReal();

    }
    //void Print(Complex * const this)
    void Print()
    {

    }

    void SetReal(int r)
    {
        real = r;
    }
    void SetImage(int i)
    {
        this->Print();
        image = i;
    }
    //int GetReal(Complex* const this) 自身为常性
    int GetReal()const
    {
        return real;
    }
    int GetImage()const
    {
        return image;
    }

    //函数内部的方法
};

//普通对象既可以调动普通方法 又可以调动常方法
//常对象只可以调动常方法

int main()
{
    Complex ca{ 1,2 };         //普通对象 优先调动同名的普通方法,其次调动常方法
    const Complex cb{ 2,3 };
    ca.Print();
    
    cb.Print();
    return 0;
}

运行结果: 

2.引用的使用:

#include<iostream>
using namespace std;
class Complex
{
	int Real;//实部
	int Image;//虚部
public:
	Complex() //缺省函数的构造
	{
		Real = 0.0;
		Image = 0.0;
		cout << "creat object:Complex()" << endl;
	}
	Complex(int r, int i) //带参数的构造函数
	{
		Real = r;
		Image = i;
		cout << "creat object:Complex(int ,int)" << endl;
	}
	void SetReal(int r) 
	{
		Real = r; 
	}
	void SetImage(int i)
	{
		Image = i;
	}
	int GetReal()
	{
		return Real;
	}
	int GetImage()
	{
		return Image;
	}
	//int GetReal() const {return Real;}
	//int GetImage()comst {return Image;}
	int &Realval()
	{
		return Real;
	}
	int &Imageval()
	{
		return Image;
	}
	int Realval() const 
	{
		return Real;
	}
	int Imageval() const
	{
		return Image;
	}
	void print() const //常方法
	{
		cout << "Real= " << Real << 't' << "Image= " << Image << endl;
	}
};
int main()
{
	Complex ca;
	Complex cb(1, 2);
	Complex cc = Complex(3, 4);
	Complex cd{ 5,6 };
	Complex ce();//是否可以构造对象
	return 0;
}

运行结果:

        常对象只能调用常方法,而不能调用不同方法;普通对象既可以调用普通方法(优先选择),也可以调用常方法。 

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

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

相关文章

Jenkins 搭建

GitLab GitLab安装 https://gitlab.cn/install/?versionce CentOS 下安装 1. 安装和配置必须的依赖项 在 CentOS 7上&#xff0c;下面的命令也会在系统防火墙中打开 HTTP、HTTPS 和 SSH 访问。这是一个可选步骤&#xff0c;如果您打算仅从本地网络访问极狐GitLab&#xf…

网易有道上线“易魔声” 开源语音合成引擎 用户可免费下载使用

网易有道上线“易魔声” 开源语音合成引擎 用户可免费下载使用 刚刚&#xff0c;我们上线了「易魔声」开源语音合成&#xff08;TTS&#xff09;引擎&#xff01;&#x1f389;&#x1f389;&#x1f389; 「易魔声」&#xff0c;是一款有道自研TTS引擎&#xff0c;目前支持中…

PNAS | 蛋白质结构预测屈服于机器学习

今天为大家介绍的是来自James E. Rothman的一篇短文。今年的阿尔伯特拉斯克基础医学研究奖表彰了AlphaFold的发明&#xff0c;这是蛋白质研究历史上的一项革命性进展&#xff0c;首次提供了凭借序列信息就能够准确预测绝大多数蛋白质的三维氨基酸排列的实际能力。这一非凡的成就…

react函数式组件props形式子向父传参

父组件中定义 子组件中触发回调传值 import { useState } from "react"; function Son(params) {const [count, setCount] useState(0);function handleClick() {console.log(params, paramsparamsparamsparamsparamsparams);params.onClick(111)setCount(count 1…

leetcode每日一题复盘(11.13~11.19)

leetcode 435 无重叠区间 本题和射气球最小箭数大同小异&#xff0c;但是这一题没做出来&#xff0c;难就难在题目如何理解:移除区间最小数量&#xff0c;使剩下的区间不重叠 那么本质上就是求最少有多少个重叠区间&#xff0c;把重叠区间去掉剩下的区间即不重叠 这里有两种做…

智慧工地管理云平台源码,Spring Cloud +Vue+UniApp

智慧工地源码 智慧工地云平台源码 智慧建筑源码支持私有化部署&#xff0c;提供SaaS硬件设备运维全套服务。 互联网建筑工地&#xff0c;是将互联网的理念和技术引入建筑工地&#xff0c;从施工现场源头抓起&#xff0c;最大程度的收集人员、安全、环境、材料等关键业务数据&am…

安防监控系统EasyCVR v3.4.0版本首页界面更新调整功能大汇总

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台可拓展性强、…

你知道调试一个 Web 的 Android 应用有多麻烦吗 AndroidStudio uniapp Capacitor

你知道调试一个 Web 的 Android 应用有多麻烦吗 AndroidStudio uniapp Capacitor 用的 uniapp 写的页面&#xff0c;全是坑&#xff0c;各种坑&#xff0c;生命周期不触发等。但由于已经做完大部分内容了&#xff0c;也不好换了。 我用的是 capacitor h5 > Android 的方式…

猫罐头怎么选择?精选的5款口碑好的猫罐头推荐!

猫罐头因其成分约80%为水分&#xff0c;对于不喜欢喝水的猫咪来说&#xff0c;正是可以用来补充水分的替代方案。 而近年来市面上也有越来越多讲究食用安全性的猫罐头&#xff0c;像是强调无添加多余加工品、或是不含谷物成分等的商品。但也因为种类过多&#xff0c;让铲屎官容…

【现场问题】datax中write部分为Oracle的时候插入clolb类型字段,插入的数据为string且长度过场问题

datax的Oraclewriter 报错显示查询报错展示查找datax中的数据插入模块 报错显示 occurred during batching: ORA-01704: string literal too long 查询报错展示 基本上查到的都是这样的&#xff0c;所以锁定是clob的字段类型的问题&#xff0c;而且是只有Oracle出问题&#…

vue2【计算属性】

目录 1&#xff1a;计算属性的作用 2&#xff1a;代码示例 3&#xff1a;特点 4&#xff1a;好处 1&#xff1a;计算属性的作用 计算属性指的是通过将属性经过运算&#xff0c;最终得到一个属性值&#xff0c;这个属性值可以在method节点下和模板结构中被使用。 2&#x…

未来之选:为什么向量数据库是您的数据管理利器

文章目录 前言什么是向量数据库&#xff1f;向量数据库的机制向量数据库的优点‍查询向量数据库 什么是向量Embedding&#xff1f;Amazon OpenSearch Service总结 前言 向量数据库擅长处理复杂的高维数据&#xff0c;正在彻底改变商业世界的数据检索和分析。它们执行相似性搜索…

从零基础到精通:Flutter开发的完整指南

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 第一部分&#xff1a;入…

CSRF 漏洞实战

CMS创建新用户 方法&#xff1a;攻击者可以利用 XSS 触发 CSRF 攻击。因为&#xff0c;可以利用 JS 发送 HTTP 请求。经过研究受害网站的业务流程&#xff0c;可以构造如下代码&#xff1a; 代码&#xff1a; <script> xmlhttp new XMLHttpRequest(); xmlhttp.open(&qu…

SQLServer添加Oracle链接服务器

又一次在项目中用到了在SQLServer添加Oracle链接服务器&#xff0c;发现之前文章写的也不太好使&#xff0c;那就再总结一次吧。 1、安装OracleClient 安装64位&#xff0c;多数SQLServer是64位&#xff0c;所以OracleClient也安装64位的&#xff1b; 再一个一般安装的Oracl…

小米路由器4A千兆版刷入OpenWRT并远程访问

小米路由器4A千兆版刷入OpenWRT并远程访问 文章目录 小米路由器4A千兆版刷入OpenWRT并远程访问前言1. 安装Python和需要的库2. 使用 OpenWRTInvasion 破解路由器3. 备份当前分区并刷入新的Breed4. 安装cpolar内网穿透4.1 注册账号4.2 下载cpolar客户端4.3 登录cpolar web ui管理…

Monkey压力测试

环境搭建 提前下好java&#xff08;我的是java8&#xff09; https://www.androiddevtools.cn/ 下载Android SDK 解压后点击安装 可以使用雷神模拟器模拟手机连接 dumpsys activity activities | grep “mFocusedActivity”&#xff08;获取当前运行进程包名&#xff09; ex…

python爬虫top250电影数据

之前看到的&#xff0c;我改了一下&#xff0c;多了很多东西 import requests from bs4 import BeautifulSoup from openpyxl import Workbook from openpyxl.styles import Font import redef extract_movie_info(info):# 使用正则表达式提取信息pattern re.compile(r导演:…

利用LangChain实现RAG

检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;结合了搜寻检索生成能力和自然语言处理架构&#xff0c;透过这个架构&#xff0c;模型可以从外部知识库搜寻相关信息&#xff0c;然后使用这些信息来生成response。要完成检索增强生成主要包含四个步骤…

2、工厂模式的实现

工厂模式概念 工厂模式是一种常用的设计模式&#xff0c;它主要用于实例化对象。这种模式的主要思想是在不暴露具体的实现细节的情况下&#xff0c;让客户端能够创建具有特定接口的对象。它可以让我们在运行时决定实例化哪个类。 在C语言中&#xff0c;实例化对象意味着创建一…