首页 > 编程语言 >c++成员变量

c++成员变量

时间:2023-03-05 13:55:06浏览次数:29  
标签:10 变量 ss 成员 c++ int solve void

class ss{
    public:
	int a;
	void solve(){
		a=10;
	}
};

ss t;
ss p;
t.solve();p.solve();

对于类,上面是对类的一个声明,而下面是定义一个具体的对象,所以类中的int a也同样是声明,只有具体定义的变量中才会有int a,所以可以t.a=....调用t中的a,所以这里的int a是变量t的,而这里的solve函数是谁的,我们可能会下意识觉得是变量t的,但其实他是类ss的,是公共的,那么他既然是公共的,如果有多个变量调用solve,它能正确的修改成员变量么,如何修改,答案是可以的,利用的是c++中的this这个关键字,我们可以把上面这个solve函数用c语言中的指针实现

void solve(ss *t){
	t->a=10;
}//与上面的效果一致

由此我们可以发现,只需要知道它具体的指针就可以准确作用到成员变量,所以原来类中的代码就可以用this改成

void solve(){
	this->a=10;
}

可以发现与c语言实现的基本一致。


证明:

class ss{
  public:
    int a;
    void solve(){
      a=10;
      printf("solve.a=%p\n",&a);
    }
};


int main(){
  ss t;
  printf("t=%p\n",&t);
  printf("t.a=%p\n",&(t.a));
  t.solve();
  return 0;
}

image


我们可以看出变量t,t中的a,solve函数中的a的地址都是相同的,由此可以说明函数的确自动确定了使用的成员变量的地址。

标签:10,变量,ss,成员,c++,int,solve,void
From: https://www.cnblogs.com/hhzp/p/17180329.html

相关文章

  • C++重载底层原理
    好吧,承认是自己浅薄了当被问起C++重载时,嘴角不自觉的微微上扬,然后脱口而出,C++重载的原则:函数名相同,函数参数列表不同(类型、个数、顺序)匹配原则1:严格匹配,找到再调用......
  • ts环境下vue3全局变量的声明和使用
    在vue2中全局变量是prototype在vue3中使用globalProperties比如引入elementPlus的组件作为全局变量1、在main.ts中声明import*asElIconsfrom'@element-plus/icons......
  • php基本语法和数据类型、变量销毁
    1、PHP基本语法:HTML和php混合使用;一个语句以;(分号)结束;如何定义一个变量,和变量的使用;php中定义一个变量要以$符号开头:$a=34;变量的数据类型不是固定不变的,根据赋值的变化而......
  • JavaScript判断变量类型的四种方法
    typeof(根据二进制判断):常用于判断基础数据类型,对于引用数据类型除了function返回‘function’,其余都返回‘object’(typeofnull===object)instanceof:主要用于区分引......
  • C++ 中的 bitset
    C++中的\(\textsf{bitset}\)是能够存储\(01\)的容器,这一点看似与布尔(bool)数组很像。而一个布尔类型将会占用\(1\)字节的空间,相对于\(\textsf{bitset}\)来讲\(1\)......
  • TCP通信聊天服务端和客户端(C/C++语言开发)附完整源码
    距离上次学Python写的Python实现简单聊天室已经过去好久了,现在学c++又写了一遍,其实过程差不多,无非是语法的变化,目前仅实现最简单的一对一的通信,然后改就是了,接下来应该是......
  • 最大前缀和C++
    //给出一个长度为 n 的序列 a,选出其中连续且非空的一段使得这段和最大。#include<iostream>usingnamespacestd;constintN=2e5+10;//注意全局常量必须在前面添加c......
  • C/C++ 数据结构堆结构算法的实现
    #include<stdio.h>#include<stdlib.h>#include<string.h>//堆的算法实现#defineDEFAULT_CAPCITY128typedefstruct_Heap{int*arr;//存储堆元素的数组......
  • Java-类-对象 - 对象内存图 成员变量和局部变量的不同 this关键字 构造方法 封装
         packagecom.demo.css;publicclasscss01{//java要创造对象,必须要有类的存在//类:一组相关属性和行为的集合,看做是对象的设计图//对象......
  • 变量的命名规范
    变量的命名规范所有变量,方法,类名:见名知意类成员变量:首字母小写和驼峰原则:monthSalary除了第一个单词以外,后面的单词首字母大写lastName局部变量:首字母小写和驼......