首页 > 其他分享 >指向常对象的指针变量和指向对象的常指针

指向常对象的指针变量和指向对象的常指针

时间:2023-05-25 22:02:47浏览次数:20  
标签:指向 对象 int stud Time 指针

1,指向常对象的指针变量
指向常对象的指针变量可以指向一个已经申明为常对象的变量,此时只能用指向常对象的指针变量指向它;也可以指向一个非常对象的变量,而此时可通过指针访问该对象,但是不能通过指针改变该对象的值。下面给出一个简单程序:

#include <iostream>

using namespace std;
class Student
{
    public:
    Student(int n,float s):num(n),score(s){}
  
   void change(int n,float s)
    {
        num = n;
        score = s;
    }
    
    void display() 
    {
        cout << num << " " << score << endl;
    }
    
   private:
    int num;
    float score;
};

int main()
{
    Student stud(29,90.5);
    Student stud1(30,60.8);
    const Student * p = &stud;
    //用一个指向常对象的指针指向非对象指针

    stud.display();
     stud.change(4,90);  //不能通过指针变量来访问对象stud,若此句改为p->change(101,80.5);则会错误


     stud.display();
    
    system("pause"); 
    return 0;
}

2,指向对象的常指针

将指向对象的指针变量申明为const型后并将之初始化,这样指针值始终保持为其初值,不能改变,也就是说它指向始终不变,但可以改变其所指向对象中数据成员的值。

#include<iostream>
using namespace std;
class  Time
{
public:  
 int hour;
 int minute;
 int sec;
 Time (int h,int m,int s):hour(h),minute(m),sec(s){}
 void reset(){
hour=00;
     minute=00;
sec=00;
 }
};
int main()
{
void fun(Time t);
Time t1(10,13,56);
Time const *p=&t1;   //如果出现Time const *p=&t1;  Time const *p=&t2;则会出错
cout<<t1.hour<<":"<<t1.minute<<":"<<t1.sec<<endl;//p只能指向t1,而不能该指t2
t1.reset();
cout<<p->hour<<":"<<p->minute<<":"<<p->sec<<endl;
return 0;
}

标签:指向,对象,int,stud,Time,指针
From: https://www.cnblogs.com/luoqingci/p/17433080.html

相关文章

  • 使用腾讯云对象存储——图片
    选择需要使用的存储桶找到密匙引入依赖 <!--日期工具栏依赖--><dependency><groupId>joda-time</groupId><artifactId>joda-time</artifactId><version>2.9.9</version></depend......
  • Java面向对象(高级)
    1、类变量类变量是被类的所有实例共享的。类变量具体放的位置在哪?在内存中的那个区域,这和jdk的版本是有关的静态变量在类加载的时候就生成了,即使没有创建类实例也能访问,当然通过实例来实现类变量定义访问修饰符static类型变量名2、类方法1、只需要在普通方法前面加上......
  • java两个对象属性比较
    两个对象进行比较相等,有两种做法:1,情况一:当仅仅只是判断两个对象是否相等时,只需重写equals()方法即可。这里就不用说明2.情况二:当除了情况一之外,还需知道是那个属性不同,那么就需要采用类反射,具体代码如下:publicstaticvoidmain(String[]args){Aa=newA();a.setUserName(......
  • C数组和指针
    C数组和指针关键字->static运算符->&、*创建并初始化数组指针、指针和数组的关系编写处理数组的函数二维数组数组什么是数组?数据类型相同的一系列元素声明数组的方式:多少个元素->数组大小元素的类型示例代码:/***@Author:Lucifer*@Date:5/6/2023......
  • 字符串原地修改双指针经典实现
    字符串原地修改经常遇到的一类题,双指针一个用于写入,一个用于扫描,互不干扰,各司其职。题目:https://leetcode.cn/problems/reverse-words-in-a-string/stringreverseWords(strings){reverse(s.begin(),s.end());intwrite=0,scan=0;while......
  • jsdom, proxy对象(补环境神器)以及抠代码总结的问题
    jsdomconstjsdom=require('jsdom')const{JSDOM}=jsdomconstfs=require('fs')options={url:'http://match.yuanrenxue.com/match/2',referrer:'http://match.yuansrenxue.com/match/2',......
  • java 通过String关键词 和 String对象创建字符串 耗时对比
    importjava.util.ArrayList;importjava.util.Vector;publicclassImoocStudent{publicstaticvoidmain(Stringargs[]){longstartTime=System.currentTimeMillis();for(inti=0;i<5000000;i++){Strings1="he......
  • C++中const和constexpr关键字解析:常量、函数和指针
    C++中const和constexpr的作用很多C++的初学者看到const这个关键字的第一反应都是一头雾水,主要是因为const可以出现在很多的位置,以及后面加入的constexpr更是常常感到困惑,今天就为大家一一解释出现它们的含义和以及作用const关键字const修饰变量这是最基本的一种用法,顾名思义,就是......
  • 【Java基础】Java8 使用 stream().filter()过滤List对象(查找符合条件的对象集合)
    本篇主要说明在Java8及以上版本中,使用stream().filter()来过滤List对象,查找符合条件的集合。一、集合对象定义集合对象以学生类(Student)为例,有学生的基本信息,包括:姓名,性别,年龄,身高,生日几项。我的学生类代码如下:packagecom.iot.productmanual.controller;importio.swagger.annota......
  • 编程打卡:面向对象程序设计
    importjava.util.*;publicclassStaffManagementSystem{privatestaticList<Staff>staffList=newArrayList<>();publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);while(true){......