首页 > 编程语言 >C++ Class

C++ Class

时间:2024-03-25 14:45:16浏览次数:22  
标签:setA setB int void C++ stu print Class

this指针

this指针是一个const指针,指向当前对象,通过this可以访问当前对象的所有成员,无论是protect/private/public

以下是一个示例:

#include <iostream>

class stu {
    public:
    void setA(int A);
    void setB(int B);
    void print();
    
    private:
    int A, B;
};

void stu::setA(int A) {
    this->A = A;
}

void stu::setB(int B) {
    this->B = B;
}

void stu::print() {
    std::cout << "A = " << this->A << ' ' << "B = " << this->B << std::endl;
}

int main() {
    stu *s = new stu;
    s->setA(10);
    s->setB(9);
    s->print();
}

由于例子中成员变量和成员函数的参数重名,因此不能使用A=A这样进行赋值,使用this->A可避免这样的情况。

this指针指向当前对象,且对于不同的对象,this的值各不相同:

#include <iostream>

class stu {
    public:
    void setA(int A);
    void setB(int B);
    void print_this();
    
    private:
    int A, B;
};

void stu::setA(int A) {
    this->A = A;
}

void stu::setB(int B) {
    this->B = B;
}

void stu::print_this() {
    std::cout << this << std::endl;
}

int main() {
    stu *s = new stu;
    s->setA(10);
    s->setB(9);
    s->print_this();
    std::cout << s << std::endl;

    stu *t = new stu;
    t->setA(10);
    t->setB(9);
    t->print_this();
    std::cout << t << std::endl;
}

输出结果如下:

0x141e05e70
0x141e05e70
0x141e05e10
0x141e05e10

可以发现this确实指向当前对象,且不同对象this值不同。

综上,this还有一些特点:

  • thisconst指针,不能被修改,任何修改this指针本身的行为都不可以
  • this只能在成员函数内部使用
  • 只有当对象被创建后this才有意义,因此不能再static成员函数中使用

标签:setA,setB,int,void,C++,stu,print,Class
From: https://www.cnblogs.com/lgats324/p/18094357

相关文章

  • cmdline---C++命令行解析库
    cmdline项目托管地址:https://github.com/tanakh/cmdlinehttps://blog.51cto.com/u_15127663/4587654https://www.cnblogs.com/ljbguanli/p/7235424.html//includecmdline.h#inclue<iostream>#include"cmdline.h"intmain(intargc,char*argv[]){......
  • C++循环结构(下)
    for循环语句作用:满足循环条件,执行循环语句语法:for(起始表达式;条件表达式;末尾循环体){循环语句}#include<iostream>usingnamespacestd;intmain(){ //从数字0打印到9 for(inti=0;i<10;i++){ cout<<i<<endl; } system("pause"); return0;}for循环语......
  • 互联网编程必读-有效的现代C++
    本书介绍    掌握C++11和C++14不仅仅是熟悉它们引入的特性(例如,自动类型声明、移动语义、lambda表达式和并发支持)。挑战在于学会有效地使用这些特性—这样你的软件才是正确的、高效的、可维护的和可移植的。这就是这本实用书的用武之地。它描述了如何使用C++11和C++14......
  • 华为OD机试C++ - 游戏分组
    游戏分组前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:[email protected];备注:CSDN。题目描述部门准备举办一场王者......
  • 华为OD机试C++ - 围棋的气
    围棋的气前言:本专栏将持续更新互联网大厂机试真题,并进行详细的分析与解答,包含完整的代码实现,希望可以帮助到正在努力的你。关于大厂机试流程、面经、面试指导等,如有任何疑问,欢迎联系我,wechat:steven_moda;email:[email protected];备注:CSDN。题目描述围棋棋盘由纵横各19条......
  • C++智能指针
    为什么需要智能指针对于普通指针,在程序结束前我们需要将每个指针都进行free,以免造成内存泄漏。但是手动释放指针是麻烦的,并且一旦漏掉就会造成内存泄漏。因此在C++11中引入智能指针避免此种情况的发生。智能指针包括std::shared_ptr/std::unique_ptr/std::weak_ptr,需要使用头文......
  • L2-019 悄悄关注 (25分) c++代码
    新浪微博上有个“悄悄关注”,一个用户悄悄关注的人,不出现在这个用户的关注列表上,但系统会推送其悄悄关注的人发表的微博给该用户。现在我们来做一回网络侦探,根据某人的关注列表和其对其他用户的点赞情况,扒出有可能被其悄悄关注的人。输入格式:输入首先在第一行给出某用户的关注......
  • L2-023 图着色问题(25分) c++代码
    还是别把问题想复杂了。。图着色问题是一个著名的NP完全问题。给定无向图G=(V,E),问可否用K种颜色为V中的每一个顶点分配一种颜色,使得不会有两个相邻顶点具有同一种颜色?但本题并不是要你解决这个着色问题,而是对给定的一种颜色分配,请你判断这是否是图着色问题的一个解。输入格......
  • L2-021 点赞狂魔(25分) c++代码
    微博上有个“点赞”功能,你可以为你喜欢的博文点个赞表示支持。每篇博文都有一些刻画其特性的标签,而你点赞的博文的类型,也间接刻画了你的特性。然而有这么一种人,他们会通过给自己看到的一切内容点赞来狂刷存在感,这种人就被称为“点赞狂魔”。他们点赞的标签非常分散,无法体现出明......
  • L2-022 重排链表(25分) c++代码
    给定一个单链表 L1​→L2​→⋯→Ln−1​→Ln​,请编写程序将链表重新排列为 Ln​→L1​→Ln−1​→L2​→⋯。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。输入格式:每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (......