设有类A的对象Aobject,若用成员函数重载前置自增表达式,那么++Aobject被编译器解释为()A、Aobject.operator++()B、operator++(Aobject)C、++(Aobject)D、Aobject::operator++()

题目

设有类A的对象Aobject,若用成员函数重载前置自增表达式,那么++Aobject被编译器解释为()

  • A、Aobject.operator++()
  • B、operator++(Aobject)
  • C、++(Aobject)
  • D、Aobject::operator++()
如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

运算符函数调用格式的表达式:y/x++与表达式:y.operator/(operator++(x,O))含义相同,由此可看出()。

A.“/”和“++”都是作为成员函数重载的

B.“/”和“++”都是作为非成员函数重载的

C.“/”是作为成员函数重载的,“++”是作为非成员函数重载的

D.“/”是作为非成员函数重载的,“++”都是作为成员函数重载的


正确答案:C
解析:本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符+,且c1、c2都是该类的对象,则c1.operator+(c2)与c1+c2含义相同。如果+作为该类的非成员函数重载,则operator+(c1,c2)与c1+c2含义相同。所以通过题目给出的两个表达式可看出“/”是作为成员函数重载的,“++”是作为非成员函数重载的。

第2题:

如果在表达式++x/y中,++是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为

A.(operator++(x) ) .operator/(y)

B.(operator++(0) ) .operator/(y)

C.operator/((operator++(x,0) ) ,y)

D.operator/((operator++(0) ) ,y)


正确答案:A
解析:C++中用成员函数重载++x为:x. operator++( ) ,用友元函数重载++x为:operator ++(x) ,用成员函数重载x/y为:x. operator/(y) ,用友元函数重载x/y为:operator/(x, y) 。

第3题:

( 24 )己知表达式 ++a 中的 "++" 是作为成员函数重载的运算符,则与十 +a 等效的运算符函数调用形为

A ) a .orerator++ ( 1 )

B ) operator++ ( a )

C ) operator++ ( a , l )

D ) a.operator++ ( )


正确答案:D

第4题:

前置自增运算符++重载为类的友元函数的形式为【 】,重载为类的成员函数的形式为【 】。 (设类为A,类对象为a)


正确答案:friend A operator++(A &) a. operator++().
friend A operator++(A &) a. operator++().

第5题:

运算符函数调用格式的表达式y/x++与表达式y.operator/(operator++(x,0))的含义相同,由此可看出( )。

A.“/”和“++”都是作为成员函数重载的

B.“/”和“++”都是作为非成员函数重载的

C.“/”是作为成员函数重载的,“++”是作为非成员函数重载的

D.“/”是作为非成员函数重载的,“++”都是作为成员函数重载的


正确答案:C
解析:运算符函数有两种调用形式,第一种是像一般函数那样用函数名调用,即y.operator*(z)或者operator*(y,z);另一种是通过运算符构成表达式,即y*z。因为“++”运算符既可以作为前缀运算符,又可以作为后缀运算符,所以重载这个运算符时,重载后缀“抖”时必须多一个虚拟参数int。

第6题:

如果表达式++x/y中,++是作为友元函数重载的,/是作为成员函数重载的,则该表达式还可为

A.(operator++(x)).operator/(y)

B.(operator++(0)).operator/(y)

C.operator/((operator++(x,0)),y)

D.operator/((operator++(0)),y)


正确答案:A
解析:C++中用成员函数重载++x为:x.operator++(),用友元函数重载++x为:operator ++(x),用成员函数重载x/y为:x.operator/(y),用友元函数重载x/y为:operator/(x,y)。

第7题:

如果表达式y*x++中,“*”是作为成员函数重载的运算符,“++”是作为友元函数重载的运算符,采用运算符函数调用格式,该表达式还可表示为

A.x.operator++(0).operator*(y);

B.operator*(x.operator++(0),y);

C.y.operator*(operator++(x,0))

D.operator*(operator++(x,0),y)


正确答案:C
解析:本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符+,且c1,c2都是该类的对象,则c1.operator+(c2)与c1+c2含义相同。如果+作为该类的非成员函数重载,则operator+(c1,c2)与c1+c2含义相同。同理,运算符*作为成员函数重载,则y*(x++)与 y.operator*(x++)含义相同,后缀++作为友元函数重载,那么x++与operator++(x,0)含义相同,所以选项 C是正确的。

第8题:

在某类的公共部分有声明string operator++( );和string operator++(int);则说明

A.string operator++( );是前置自增运算符声明

B.string( )perator++( );是后置自增运算符声明

C.string operator++(int);是前置自增运算符声明

D.两条语句无区别


正确答案:A
解析:在重载单操作符的过程中,++既可以是前缀运算符,又可以是后缀运算符,C++规定重载后缀++时必须多一个虚拟参数int,则不带虚拟参数int的为前缀运算符。

第9题:

如果算符函数调用格式的表达式:x.operator-(operator++(y,0)中的“-”是作为成员函数重载的,“++”是作为友元函数重载的,那么该表达式还可以表示为:( )

A.x-y++

B.x-(++y)

C.(x++)-y

D.++x-y


正确答案:A
解析:本题考核运算符的重载。假定已经作为某个类的成员函数重载了二元运算符+,且c1、c2都是该类的对象,则c1.operator+(c2)与c1+c2含义相同。如果+作为该类的非成员函数重载,则operator+(c1,c2)与c1+c2含义相同。同时一元运算符“++”重载函数调用中采用了虚拟参数,说明++为后缀的,所以其等价的表达式为“x-y++”。

第10题:

在某类的公共部分有声明string operator++();和string operator++(int);则说明

A.string operator++();是前置自增运算符声明

B.string operator++();是后置自增运算符声明

C.string operator++(int); 是前置自增运算符声明

D.两条语句无区别


正确答案:A
解析:在重载单操作符的过程中,对于像++和-这样的操作符,不易区分属于前置还是后置,因此C++规定了用一个虚的形参来区分前置和后置。

更多相关问题