首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我应该在C++中为成员变量和函数参数使用相同的名称

在C++中,为成员变量和函数参数使用相同的名称是不建议的,因为这可能导致混淆和错误。当成员变量和函数参数具有相同的名称时,函数参数会遮蔽成员变量,导致在函数内部无法访问成员变量。

例如,以下代码中的函数setValue无法正确设置成员变量value的值:

代码语言:cpp
复制
class MyClass {
public:
    int value;

    void setValue(int value) {
        value = value; // 这里的 value 是函数参数,遮蔽了成员变量 value
    }
};

为了避免这种情况,建议为成员变量和函数参数使用不同的名称。例如,可以将函数参数的名称更改为newValue

代码语言:cpp
复制
class MyClass {
public:
    int value;

    void setValue(int newValue) {
        value = newValue; // 现在可以正确设置成员变量 value 的值
    }
};

尽管如此,如果您确实需要在成员函数中使用相同的名称,可以使用this指针来访问成员变量。例如:

代码语言:cpp
复制
class MyClass {
public:
    int value;

    void setValue(int value) {
        this->value = value; // 使用 this->value 来访问成员变量 value
    }
};

总之,为了避免混淆和错误,建议为成员变量和函数参数使用不同的名称。如果确实需要使用相同的名称,可以使用this指针来访问成员变量。

相关搜索:matlab变量中的函数名称和参数如何使用gmock模拟修改C++类中私有变量的成员函数?如何在c++中为多个类类型指定相同的模板化成员函数?在C++中,使用函数参数的名称作为每个可变宏参数的前缀类方法和具有相同名称的变量,C++中的编译错误不在Java中?在函数中声明具有相同名称的参数或变量时,Postgresql不会检测到重复名称如何在Python中使用具有相同名称的命名参数和全局变量?对于具有相同类型和名称的变量的不同结构,如何使用泛型类型参数?我应该使用类来定义将使用相同参数的函数,还是应该使用全局变量?如何使用c++中的类中声明的变量和列表,以及如何将参数传递给函数?如何在typescript中为接受1个参数或2个参数的函数定义参数名称和类型?C++如果这些函数被传入构造函数,我如何使用带有自定义散列和比较的unordered_map作为成员变量?相同的比较函数为C++中的排序和优先级队列提供不同的输出如何在c++中的lambda函数中传递同名的局部变量和参数(使用此关键字)?如何使用与Python中包装的包装函数相同的批注和参数名创建包装函数当具有相同名称的函数的返回类型为T&和T时,如何使用T&调用函数如何使用参数调用在python中存储为变量的函数?--抛出类型错误静态成员变量只能在类的静态方法中使用,但是为什么我们可以在C++类的构造函数中为静态变量赋值呢?如何用我自己的实现替换MS VC++项目中的WinAPI函数调用(名称和参数设置是相同的)?如何使用链接列表中存在的变量在链接列表类外部调用函数和接收函数中的参数
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • C语言命名规范

    C是一门朴素的语言,你使用的命名也应该这样。然而,当面对复杂情况时就有些棘手,给全局变量取一个描述性的名字是必要的。把一个全局函数叫做“foo”是一种目光短浅的行为。全局函数也一样,如果你有一个统计当前用户个数的函数,应当把它命名为“count_active_user()”或者简单点些的类似名称,不应该命名为“cntusr()”。1.三种流行的命名法则目前,业界共有四种命名法则:驼峰命名法、匈牙利命名法、帕斯卡命名法和下划线命名法,其中前三种是较为流行的命名法。驼峰命令法。正如它的名称所表示的那样,是指混合使用大小写字母来构成变量和函数的名字,其实我们工作比较常用的就是驼峰命令法。例如,下面是分别用骆驼式命名法和下划线法命名的同一个函数:printEmployeePaychecks();

    02

    申明与定义的区别

    C++编码过程中,我们经常谈及“定义”和“声明”,二者是编程过程中的基本概念。我们需要使用一个变量、类型(类、结构体、枚举、共用体)或者函数时,我们需要提前定义和申明。定义和申明的过程,就像我们向图书馆借阅书籍一般,需要先完成书籍的印刷,即创造出书籍,这是一个定义的过程,有了书籍,我们需要到图书馆完成借阅的登记手续,这是申明的过程。完成了申明,我们有了使用书籍的权限,就可以尽情的畅游在知识的海洋。如果说书籍是自己委托印刷厂印刷的,那么你无需向他人借阅,即无需声明,可以直接使用书籍。一本书籍只需要印刷一次,但是可以被多人多次借阅,也就是说定义只需要一次,但是申明可以有多次。这里的书籍指代的是“定义”和“声明”作用的对象,即变量、类型和函数。C/C++中,使用一个变量、类型或者函数必须先在使用前完成定义和申明。

    02

    C++经典面试题(最全,面中率最高)

    delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数。malloc与free是C++/C语言的标准库函数,new/delete是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete。注意new/delete不是库函数。

    03

    C++知识概要

    综上: 栈区(stack) — 由编译器自动分配释放,存放函数的参数值,局部变量的值等其操作方式类似于数据结构中的栈 堆区(heap) — 一般由程序员分配释放,若程序员不释放,程序结束时可能由 OS(操作系统)回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表 全局区(静态区)(static) — 全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域。程序结束后由系统释放 文字常量区 — 常量字符串就是放在这里的。程序结束后由系统释放 程序代码区 — 存放函数体的二进制代码

    02
    领券