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

在另一个成员函数内调用成员函数时,应在'int‘之前使用主表达式

在另一个成员函数内调用成员函数时,应在'int'之前使用主表达式。

这个问题涉及到C++编程语言中的成员函数调用和主表达式的概念。

在C++中,成员函数是定义在类中的函数,它可以通过对象来调用。当在一个成员函数内部调用另一个成员函数时,需要使用主表达式来指定调用的对象。

主表达式是指一个对象或指针,它可以通过点运算符(.)或箭头运算符(->)来访问成员函数。点运算符用于对象,箭头运算符用于指针。

在调用成员函数时,需要使用主表达式来指定调用的对象或指针,然后使用点运算符或箭头运算符来访问成员函数。例如:

代码语言:txt
复制
class MyClass {
public:
    void func1() {
        // 调用成员函数func2
        func2();
    }

    void func2() {
        // 成员函数的实现
    }
};

int main() {
    MyClass obj;
    obj.func1(); // 调用成员函数func1
    return 0;
}

在上面的例子中,成员函数func1内部调用了成员函数func2。在func1中,使用了主表达式this来指代调用的对象(即obj),然后使用点运算符来访问成员函数func2

需要注意的是,在成员函数内部调用另一个成员函数时,不需要在主表达式之前加上关键字intint是整型的数据类型,与成员函数调用无关。

总结起来,在另一个成员函数内调用成员函数时,应在主表达式之前使用点运算符或箭头运算符来访问成员函数,而不需要加上关键字int

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

c++类与对象(五):友元、内部类、临时对象、匿名对象

友元包括:友元函数和友元类 1.1友元函数 友元函数可以直接访问类的私有成员,它是定义类外部的普通函数,不属于任何类,但需要在类的内部声明,声明时需要在前面加friend关键字 之前我们重载...>已经使用过了,一开始发现重载成成员函数不行。...友元函数调用与普通函数调用原理相同 1.2友元类 友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员。...它们通常用于达式中进行一些计算或操作,然后被立即销毁。临时对象的生命周期通常只存在于当前表达式的执行过程中。 临时对象的使用场景包括: 作为函数的实参传递给函数。...它们没有被显式地分配给任何变量,只创建使用,通常用于简单操作、函数调用或者作为表达式的一部分 class A { public: A()//无参构造 { count++; } A(A

21110

友元

友元函数 之前我们Time类的示例中,我们重载乘法运算符的参数和其他参数不一样,因为有两种不同的类型,即Time和double类型,限制了调用的方式,我们成员函数调用的过程是b..opertaor*...当然不行,因为虽然我们看来二者是一样的,但这样写就不对应成员函数了,2.75不是一个对象,因此他不能作为左操作数。编译器也不能使用成员函数替换这个表达式。...解决办法是,让他不由对象调用,而由非成员函数调用,但是非成员函数又无法访问类对象的数据。怎么办。。。...不能通过成员运算符调用 有类隐藏对象的访问权限 然后我们就可以编写他的定义了,既然不是成员函数就不能用类的限定符修饰了,也不要在定义中使用firend。...,但是可以用我们之前成员函数进行计算,我们这里替换了一下参数的顺序,也有和友元函数一样的作用(最好是友元 可以成为类的接口的一部分) 重载<<运算符 方式1: 我们之前显示类中数据都是通过调用成员函数

14410
  • C#7.0 新增功能

    使用 out 变量的地方声明 out 变量,而不是在上面的另一行。 无需分配初始值。 通过方法调用使用 out 变量的位置声明该变量,使得分配它之前不可能意外使用它。...弃元类似于未赋值的变量;不可在代码中使用弃元(赋值语句除外)。 以下方案中支持弃元: 在对元组或用户定义的类型进行解构使用 out 参数调用方法。...06 本地函数 许多类的设计都包括仅从一个位置调用的方法。 这些额外的私有方法使每个方法保持小且集中。 本地函数使你能够另一个方法的上下文声明方法 。...C# 7.0 扩展了可作为表达式实现的允许的成员 C# 7.0 中,你可以属性 和索引器 上实现构造函数 、终结器 以及 get 和 set 访问器。...下例使用 throw 表达式向方法传递空字符串数组引发 ArgumentException。 C# 7.0 之前,此逻辑将需要显示 if/else 语句中。

    1.4K10

    第 19 章 特殊工具与技术

    const,因此,初始化枚举成员提供的初始值必须是常量表达式,也可以在任何需要常量表达式的地方使用枚举成员。...和使用指向数据成员的指针一样,使用成员函数指针可以使用 .*或者 ->*运算符。...嵌套类可以直接使用外层成员,无需对该成员的名字进行限定。 嵌套类必须声明类的内部,但是可以定义类的内部或者外部。当在外层类之外定义一个嵌套类,必须以外层类的名字限定嵌套类的名字。...---- 19.7 局部类 局部类是指定义某个函数内部的类,局部类定义的类型只定义它的作用域可见。 局部类的所有成员(包括函数在内),都必须完整定义类的内部。...// pf指向一个 C函数,该函数接受一个 int返回 void // 当我们使用 pf调用函数,编译器认定当前采用的是一个 C函数 extern "C" void (*pf)(int); void

    82050

    第 19 章 特殊工具与技术

    const,因此,初始化枚举成员提供的初始值必须是常量表达式,也可以在任何需要常量表达式的地方使用枚举成员。...和使用指向数据成员的指针一样,使用成员函数指针可以使用 .*或者 ->*运算符。...嵌套类可以直接使用外层成员,无需对该成员的名字进行限定。 嵌套类必须声明类的内部,但是可以定义类的内部或者外部。当在外层类之外定义一个嵌套类,必须以外层类的名字限定嵌套类的名字。...---- 19.7 局部类 局部类是指定义某个函数内部的类,局部类定义的类型只定义它的作用域可见。 局部类的所有成员(包括函数在内),都必须完整定义类的内部。...// pf指向一个 C函数,该函数接受一个 int返回 void // 当我们使用 pf调用函数,编译器认定当前采用的是一个 C函数 extern "C" void (*pf)(int); void

    74140

    【C++修行之道】类和对象(六)再谈构造函数(初始化列表)| explicit关键字 | static成员 | 友元|匿名对象|拷贝一些编译器优化

    int& _ref;// 引用 }; 初始化列表是C++构造函数中的一个特性,它允许构造函数体执行之前初始化类的成员变量。...声明给缺省值也可以是其他的值 C++11 及其后续版本中,类成员可以声明时赋予缺省值,这些缺省值将在构造对象的构造函数调用之前进行初始化。...,但不是类的成员函数 友元函数不能用const修饰 友元函数可以类定义的任何地方声明,不受类访问限定符限制 一个函数可以是多个类的友元函数 友元函数调用与普通函数调用原理相同 3.2 友元类 友元类的所有成员函数都可以是另一个类的友元函数...例如 f1(a1),这里的 a1 是之前的表达式中定义的对象,无法函数调用时进行优化,只能调用拷贝构造函数创建参数副本。...临时对象:临时对象通常是达式中临时创建的对象,它们的生命周期仅限于表达式范围。const 引用允许将临时对象绑定到引用上,从而避免了临时对象的拷贝。

    7310

    C++类与对象(四):再谈构造函数(详解初始化列表)、Static成员

    1.再谈构造函数 1.1构造函数体赋值 根据之前介绍的内容:创建对象,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值,我们之前使用的构造函数都叫做函数体内赋初值 class Date...因为初始化只能初始化一次,而构造函数体内可以多次赋值。 初始化与赋值区别: 初始化是创建变量为其赋予一个初始值。构造函数中,初始化通常是在对象创建成员变量进行赋值。...//自定义类型调用自己的默认构造函数 // _month = month; // _day = day;//这三个可以在这,也可以初始化列表 //} private: int _year...——就在初始化列表 return 0; } 可以知道的是:进去函数之前,定义和初始化都已经完成了,函数体进行的只是单纯的赋值操作。 所有的初始化行为都是初始化列表完成的。...) 引用成员变量 const成员变量 自定义类型成员(且该类没有默认构造函数) 尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,一定会先使用初始化列表初始化 成员变量类中声明次序就是其初始化列表中的初始化顺序

    91810

    java(4)-深入理解java嵌套类、内部类以及内部类builder构建构造函数六、使用 builder 模式解决构造方法参数过多的情况

    但是该方法结束之后, 方法创建的内部类对象可能仍然存在于堆中!例如,如果对它的引用被传递到其他某些代码,并存储一个成员变量。...函数式接口可以使用@FunctionalInterface注解标识,被该注解标注的接口具有多个非抽象方法,则会编译报错。...传统上,程序员使用了可伸缩(telescoping constructor)构造方法模式,在这种模式中,只提供了一个只所需参数的构造函数另一个只有一个可选参数,第三个有两个可选参数,等等,最终构造函数中包含所有可选参数...通过在对象构建完成手动「冻结」对象,并且不允许它在解冻之前使用,可以减少这些缺点,但是这种变体在实践中很难使用并且很少使用。...而且,在运行时会导致错误,因为编译器无法确保程序员使用对象之前调用freeze 方法。 幸运的是,还有第三种选择,它结合了可伸缩构造方法模式的安全性和 JavaBean 模式的可读性。

    1.6K10

    C++程序员经常问的11个问题

    下面是另一个例子: int j=10; int i=0; while( ++i, --j) {  //直到j=0,循环结束,循环,i不断自加 } 要点4,使用全局对象的构造函数程序启动前调用函数...因为全局对象都是主程序开始前被构造,这些函数都将会在main()之前返回结果。...程序代码 }   全局对象logmain()运行之前被构造,log调用函数activate_log()。从而,当main()开始执行时,它就可以从log文件中读取数据。   ...所以,当你通过指针调用一个虚函数成员,这个调用将会被动态回收。另一个需要注意的地方,你不能取一个类的构造函数和析构函数的地址。...你不能保证你的应用程序是不是会在另一个编译器上编译,另一个平台上运行,所以还是请使用delete[]。

    85720

    【专业技术】你必须注意的11个C++要点

    下面是另一个例子: int j=10; int i=0; while( ++i, --j) { //直到j=0,循环结束,循环,i不断自加 } 要点4,使用全局对象的构造函数程序启动前调用函数...如:转态过程函数、登记功能函数都是必须在实际程序运行前被调用的。最简单的办法是通过一个全局对象的构造函数调用这些函数。因为全局对象都是主程序开始前被构造,这些函数都将会在main()之前返回结果。...程序代码 } 全局对象logmain()运行之前被构造,log调用函数activate_log()。从而,当main()开始执行时,它就可以从log文件中读取数据。...所以,当你通过指针调用一个虚函数成员,这个调用将会被动态回收。另一个需要注意的地方,你不能取一个类的构造函数和析构函数的地址。...你不能保证你的应用程序是不是会在另一个编译器上编译,另一个平台上运行,所以还是请使用delete[]。

    98250

    第 18 章 用于大型程序的工具

    栈展开过程中,如果退出了某个块,则同时释放块中局部对象使用的内存。因此抛出一个指向局部对象的指针几乎肯定是一种错误的行为。 当抛出一条表达式,该表达式的静态编译类型决定了异常对象的类型。...构造函数进入其函数之前会首先执行初始值列表。因为初始值列表抛出异常,构造函数体内的 try块还未生效,所以构造函数体内的 catch语句无法处理构造函数初始值列表抛出的异常。...成员函数中,noexcept说明符需要跟在 const及引用限定符之后,而在 final、override或虚函数的=0之前。 通常情况下,编译器不能也不必在编译验证异常说明。...未命名的命名空间中定义的变量拥有静态生命周期:他们第一次使用前创建,并且直到程序结束才销毁。 一个未命名的命名空间可以某个给定的文件不连续,但是不能跨越多个文件,仅在特定的文件内部有效。...自定义的拷贝/赋值构造函数和赋值运算符都需要显式调用基类的相应成员来完成派生类对象的拷贝、移动和赋值操作。只有当派生类使用的是合成版本的函数,才会自动对齐基类部分执行相应操作。

    91620

    第 18 章 用于大型程序的工具

    栈展开过程中,如果退出了某个块,则同时释放块中局部对象使用的内存。因此抛出一个指向局部对象的指针几乎肯定是一种错误的行为。 当抛出一条表达式,该表达式的静态编译类型决定了异常对象的类型。...构造函数进入其函数之前会首先执行初始值列表。因为初始值列表抛出异常,构造函数体内的 try块还未生效,所以构造函数体内的 catch语句无法处理构造函数初始值列表抛出的异常。...成员函数中,noexcept说明符需要跟在 const及引用限定符之后,而在 final、override或虚函数的=0之前。 通常情况下,编译器不能也不必在编译验证异常说明。...未命名的命名空间中定义的变量拥有静态生命周期:他们第一次使用前创建,并且直到程序结束才销毁。 一个未命名的命名空间可以某个给定的文件不连续,但是不能跨越多个文件,仅在特定的文件内部有效。...自定义的拷贝/赋值构造函数和赋值运算符都需要显式调用基类的相应成员来完成派生类对象的拷贝、移动和赋值操作。只有当派生类使用的是合成版本的函数,才会自动对齐基类部分执行相应操作。

    98650

    C++中与类有关的注意事项(更新中~~~)

    ,尽管先定义了它的对象成员,不过它不会立即调用其默认构造函数,而是去看看你有没有写相应的初始化(注意:这里是指在类里面,而不是指main函数以及类外函数,对于类外函数应注意,定义类的同时必须给它附上一定的值...针对继承,其构造函数的一般调用顺序为基类构造函数 ---> 成员对象的构造函数 ---> 它自身的构造函数(这里是指初始化列表后大括号的内容) 类的静态成员(static member)必须在类声明...类里面的任何成员变量定义是不能初始化的,尽管你可以编译过。 类的一个对象调用了一次构造函数之后,是不允许再次调用构造函数的。...{return memi;} //error double getmemd(){return memd;} }; 无论是类外还是访问私有成员最好设置一个接口,养成一个习惯。...使用类对象显示的指定模板实参了,不要忘了,另外系统隐藏了一个 类对象,一般两个对象中隐藏第一个*/ 重载>> 和 << 一般public处声明(声明时不要忘记它是友元函数

    71020

    C++ 类、继承、重载《Rice C++ 学习开发》

    因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。...当使用不同类型的继承,遵循以下几个规则: 公有继承(public):当一个类派生自公有基类,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问...重载声明是指一个与之前已经该作用域声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。...当您调用一个重载函数或重载运算符,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。...函数重载:同一个作用域,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指参数的个数、类型或者顺序)必须不同。您不能仅通过返回类型的不同来重载函数

    63510

    C++之面向对象(下)

    ---- 一、再谈构造函数 1.构造函数体赋值 创建对象,编译器通过调用构造函数给该对象中各个成员变量一个合适的初值。...因为cout的输出流对象和隐含的this指针抢占第一个参数的位置。this指针默认是第一个参数也就是左操作数了。但是实际使用中只有cout是第一个形参对象,才能正常使用。...,但不是类的成员函数 友元函数不能用const修饰 因为友元函数没有this指针,它是一个的类外的函数,不过可以访问类成员。...友元函数可以类定义的任何地方声明,不受类访问限定符限制 一个函数可以是多个类的友元函数 友元函数调用与普通函数调用原理相同 3.友元类 1.友元类的引入 如果想要在一个类中访问另一个类的成员,就需要将这个类声明为另一个类的友元类...友元类的所有成员函数都可以是另一个类的友元函数,都可以访问另一个类中的非公有成员

    38540

    Java 中文官方教程 2022 版(三)

    调用对象的方法 您还可以使用对象引用来调用对象的方法。您将方法的简单名称附加到对象引用上,中间使用点运算符(.)。此外,您可以括号提供方法的任何参数。如果方法不需要任何参数,请使用空括号。...要引用Point字段的**x**,构造函数必须使用this.x。 使用this与构造函数 构造函数内部,你也可以使用this关键字来调用同一类中的另一个构造函数。这样做被称为显式构造函数调用。...如果存在,调用另一个构造函数必须是构造函数中的第一行。...private修饰符指定该成员只能在其自己的类中访问。protected修饰符指定该成员只能在其自己的包访问(与包私有相同),并且可以由另一个包中其类的子类访问。...3:本地类中指定搜索条件代码中调用printPersons以获取符合应征条件的成员是相同的。

    28500

    C++继承

    继承允许我们依据另一个类来定义一个类。当创建一个类,您不需要重新编写新的数据成员成员函数,只需指定新建的类继承了一个已有的类的成员即可。这个已有的类称为基类,新建的类称为派生类。...因此基类成员如果不想被派生类的成员函数访问,则应在基类中声明为 private。...当使用不同类型的继承,遵循以下几个规则: 公有继承(public):当一个类派生自公有基类,基类的公有成员也是派生类的公有成员,基类的保护成员也是派生类的保护成员,基类的私有成员不能直接被派生类访问...,但是可以通过调用基类的公有和保护成员来访问。...私有继承(private):当一个类派生自私有基类,基类的公有和保护成员将成为派生类的私有成员。 多继承 多继承即一个子类可以有多个父类,继承了多个父类的成员变量和函数

    38320

    【笔记】《C++Primer》—— 第四部分:高级主题(完)

    当我们想要从一个分布和一个范围中生成随机数,我们应该使用随机数分布器,常用的随机数分布器就是uniform_int_distribution均匀整数分布器和uniform_real_distribution...,因此最好我们调用基类函数也要特指 可以将某个类继承的时候声明为虚基类,方法是继承的派生列表中对应项前面加上virtual,这样处理后无论这个目标类被间接继承多少次,这个基类成员都只会出现一次,此时的派生称为虚派生...);,如果我们使用定位new,默认情况下根据参数的不同能调用下面的四个函数,用起来将会和allocator的construct类似,可以指定的内存地址分配想要的对象 运行时类型识别(RTTI)应在我们想使用基类对象的指针或引用来执行某个派生类的非虚函数使用...*fun)(10); 成员指针的一大用处是存放为函数表 嵌套类的特点是其名字在外层类之外就不可见了,需要用作用域符来访问 嵌套类和外层类之间没有权限特权,完全可以当作一个独立的类使用 嵌套类的外层类完成真正的定义之前...局部类是定义函数内部的类,局部类的定义只定义它的作用域中可见 局部类的特点是其所有成员都必须在类完成定义 同样局部类和函数之间没有权限特权 局部类的嵌套类本质也属于一个局部类,所以嵌套类自身的成员必须定义嵌套类内部

    88210

    《C++Primer》第十三章 拷贝控制

    无论何时一个对象被销毁,就会自动调用其析构函数: 变量离开其作用域被销毁 当一个对象被销毁,其成员被销毁 容器(无论是标准库容器还是数组)被销毁,其元素被销毁 对于动态分配的对象,当对指向它的指针使用...,或是类有一个const的或引用成员,则类的合成拷贝构造函数被定义为删除的 如果类的某个成员的析构函数是删除的或不可访问的,或是类有一个引用成员,他没有类初始化器,或是类有一个const成员,他没有类初始化器且未显式定义默认构造函数...代码中唯一可能抛出异常的就是拷贝构造函数中的new表达式,如果真的异常,也会在改变左侧运算对象之前发生 动态内存管理类 某些类需要在运行时分配可变大小的内存空间,这种类通常使用标准库容器来保存它们的数据...右值引用有一个重要的性质——只能班固定到一个将要销毁的对象,因此我们可以自由地将一个右值引用的资源“移动到另一个对象中”。...左值和右值引用成员函数 通常我们一个对象上调用成员函数,而不管该对象是一个左值还是一个右值,例如: // 一个string右值上调用find成员 string s1 = "a value", s2

    1.6K40

    如何深入掌握C语言操作符及表达式求值(详解)

    下标引用、函数调用和结构成员 [ ] 下标引用操作符 操作数 ( ) 函数调用操作符 .访问一个结构的成员达式求值 隐式类型转换 整型提升 两个例子 算术转换 操作符的属性 C语言运算符优先级 -...一个数组名 + 一个索引值(经常与数组一起使用int arr[10];//创建数组 arr[9] = 10;//实用下标引用操作符 [ ]的两个操作数是arr和9 ( ) 函数调用操作符 接受一个或者多个操作数...//实用()作为函数调用操作符 return 0; } .访问一个结构的成员 ....隐式类型转换 ---- 概念 C的整型算术运算总是至少以缺省整型类型的精度来进行的,为了获得这个精度 表达式中的字符和短整型操作数使用之前被转换为普通整型,这种转换称为整型提升 意义 表达式的整型运算要在...CPU的相应运算器件执行 CPU整型运算器操作数字节长度一般就是int字节长度,也是CPU的通用寄存器的长度  两个char类型的相加,CPU执行时实际上也要先转换为CPU整型操作数的标准长度

    58840
    领券