c++函数前面加有什么作用,C++类的成员函数前加&什么意思

2020-11-23 06:38:06 字数 5854 阅读 9056

1楼:人生多问

如果这个函数的返回值不是void,那&的作用是指函数的返回值是引用类型,这个符号是与返回值配对的

////////////

这就是指返回值是引用

2楼:匿名用户

"&"是用作“且”,表示并列。

"&":逻辑上表示两者属于缺一不可的关系,还可以表示一个人和另外一个人之意,与and同义。如a&b,表示a与b,a和b。

字符 & 的最早历史可以追溯到公元1世纪,最早是拉丁语et (意为and)的连写。最早的 & 很像 e 和 t 的组合,随着印刷技术的发展,这个符号逐渐形成自己的样式并脱离其原始影子。在这个字符中,仍能看出e的影子,但是t已经消失不见。

3楼:陈宗权

表示这个函数的返回类型是引用类型,或者说返回值的传递方式是引用传递。

4楼:匿名用户

在函数调用中是传引用调用的意思。意思就把实参变量换成行参变量、

c++类的成员函数前加&什么意思

5楼:匿名用户

这个和函数参数加地址符的作用是一样的,用于返值返回的是引用而不是赋值。

也就是说,该函数返值会通过地址传送的方式给到函数调用者要求的返回值,这样可以节省对象赋值造成的内存浪费,通常用于返值是大型对象(而不是简单变量类型)的时候。

比如你有个class t,而这个函数的返值是return t; 加上地址符返值后,返回t变量的地址,将地址传递给接收返值的变量,而不是新建一个类t,调用类的复制函数创建一个新类。

6楼:it孤鹜

& 就是引用的意思

引用就是某一变量(目标)的一个别名,对引用的操作与对变量直接操作完全一样。

c++中函数名字前有&是什么意思?

7楼:學雅思

&的意思是返回引用类型。

格式:类型标识符 &函数名(形参列表及类型说明)。

在内存中不产生被返回值的副本;(注意:正是因为这点原因,所以返回一个局部变量的引用是不可取的。因为随着该局部变量生存期的结束,相应的引用也会失效,产生runtime error。

扩展资料

使用返回引用类型注意事项:

1、不能返回局部变量的引用。这条可以参照effective c++的item 31。主要原因是局部变量会在函数返回后被销毁,因此被返回的引用就成为了"无所指"的引用,程序会进入未知状态。

2、不能返回函数内部new分配的内存的引用。这条可以参照effective c++的item。虽然不存在局部变量的被动销毁问题,可对于这种情况(返回函数内部new分配内存的引用),又面临其它尴尬局面。

例如,被函数返回的引用只是作为一个临时变量出现,而没有被赋予一个实际的变量,那么这个引用所指向的空间(由new分配)就无法释放,造成memory leak。

3、可以返回类成员的引用,但最好是const。这条原则可以参照effective c++的item 30。主要原因是当对象的属性是与某种业务规则(business rule)相关联的时候,其赋值常常与某些其它属性或者对象的状态有关,因此有必要将赋值操作封装在一个业务规则当中。

如果其它对象可以获得该属性的非常量引用(或指针),那么对该属性的单纯赋值就会破坏业务规则的完整性。

8楼:匿名用户

&的意思是,返回类型为***plex 的一个引用。

不加&的时候表示,返回类型为***plex 的一个拷贝。

就类似于函数参数传递时,按值传递和按引用传递的区别。

9楼:匿名用户

返回一个***plex 对象的引用。

既是返回的对象不会被复制 直接丢给你

10楼:匿名用户

***plex &, 这个不应该叫函数名前有&,这个应该叫类型后面加&, 表示引用类型。

11楼:

&的意思为,为a1取个别名,为operator

c++参数前加&是什么意思?

12楼:匿名用户

&是引用符运算符起作用就是可以返回当前被引用元素的值举个简单例子相信楼主很快就会明白:

class a

void getelem(int &e)//此处若没有&运行就不能显示e的值因为e的作用域只是当前函数&使他可以被返回

};int main()

说通俗点就是用来让函数的参数被赋予实际的值,而不是在函数运行完后参数就没作用了,这个在学数据结构**用的很多谢谢~

13楼:孙五刚

返回对那个类型的一个引

用。以你的例子来说,就是返回对ostream类型的一个引用。目的是可以连续调用。比如在类a里重载了《这个符号,返回类型为ostream&,那么就可以连续输出类a的两个对象:

a a,b;

cout<

若去掉&符号,则只能这样写:

cout<

cout<

要麻烦很多。

14楼:

&在变量前表示的是变量在内存中的地址,一般单独使用没有特定的意义,&和变量做为函数的参数一起使用,表示传递给该函数的是变量地址,而不是变量值。

15楼:匿名用户

1.取参数的地址

2.表引用,以用来传递参数

c++函数名前面加&是什么意思

16楼:司马刀剑

这个和函数参数加地址符的作用是一样的,用于返值返回的是引用而不是赋值。

也就是说,该函数返值会通过地址传送的方式给到函数调用者要求的返回值,这样可以节省对象赋值造成的内存浪费,通常用于返值是大型对象(而不是简单变量类型)的时候。

比如你有个class t,而这个函数的返值是return t; 加上地址符返值后,返回t变量的地址,将地址传递给接收返值的变量,而不是新建一个类t,调用类的复制函数创建一个新类。

c++中的虚拟析构函数有什么作用?

17楼:平填真杯具平男

class father;

class son : public class father;

在上述条件下,可以实现多态

father* pointer = new son;

当释放时

delete pointer;

在这个时

候,如果,father类和son类的析构是虚函数才能够正确释放

18楼:匿名用户

自动调用基类部分的析构函数对基类的设计有重要影响。

删除指向动态分配对象的指针时,需要运行析构函数在释放对象的内存之前清除对象。处理继承层次中的对象时,指针的静态类型可能与被删除对象的动态类型不同,可能会删除实际指向派生类对象的基类类型指针。

如果删除基类指针,则需要运行基类析构函数并清除基类的成员,如果对象实际是派生类型的,则没有定义该行为,要保证运行适当的析构函数,基类中的析构函数必须是析构的。

例如:class a;

class b public a:

则 a* p = new b(), 是可以编译通过的,但在调用析构时需要调用b的析构函数,所以a必须定义为虚函数才能正确析构。

c++中的构造函数..前加上explicit有什么用??

19楼:匿名用户

c++提供了关键字explicit,可以阻止不应该允许的经过转换构造函数进行的隐式转换的发生。声明为explicit的构造函数不能在隐式转换中使用。

c++中, 一个参数的构造函数, 承担了两个角色。 1 是个构造器 2 是个默认且隐含的类型转换操作符。

所以, 有时候在我们写下如 aaa = ***, 这样的**, 且恰好***的类型正好是aaa单参数构造器的参数类型, 这时候编译器就自动调用这个构造器, 创建一个aaa的对象。

这样看起来好象很酷, 很方便。 但在某些情况下(见下面权威的例子), 却违背了我们(程序员)的本意。 真是成也萧何, 败也萧何。

这时候就要在这个构造器前面加上explicit修饰, 指定这个构造器只能被明确的调用,使用, 不能作为类型转换操作符被隐含的使用。 呵呵, 看来还是光明正大些比较好。

explicit构造函数的作用

解析:explicit构造函数是用来防止隐式转换的。请看下面的**:

1 class test1

2 //普通构造函数

5 private:

6 int num;

7 };

8 9 class test2

10 //explicit(显式)构造函数

13 private:

14 int num;

15 };

16 17 int main()

18 test1的构造函数带一个int型的参数,**19行会隐式转换成调用test1的这个构造函数。而test2的构造函数被声明为explicit(显式),这表示不能通过隐式转换来调用这个构造函数,因此**20行会出现编译错误。

普通构造函数能够被隐式调用。而explicit构造函数只能被显示调用。

20楼:匿名用户

测试一下这段**,然后把t的构造函数前面加上explicit再测一下看会有什么错误?

class t

int geti()const

private:

int n;

};void fun(t &t)

int main()

21楼:匿名用户

class stack

explicit 表示禁止从类型int到类型stack的隐式转换:

stack s1(40); // ok

stack s2 = 40; // error推荐c++ 语言作者写的书《c++程序设计语言》,关于c++ 这门语言,你想知道的里面几乎都有哈!

c++函数名的前面有&或是*符号,是什么意思?

22楼:永夜雾华

&,位与、取址、引用定义

* 与c的相同,指针定义、指定引用、乘积运算用到。

c++ 函数名前的::是什么意思

23楼:匿名用户

::是域运算符

域运算符一般用来选用全局的函数,如在cwnd类里要使用api的setwindowpos()就要用域运算符

::setwindowpos();

m_dataset.setconnection(::getconnection());

这句话的意思是,调用 m_dataset对象的setconnection()方法,

而setconnection()里面的参数是由全局函数getconnection()的返回值。

有疑问请hi我或追问,请不要关闭问题:)

24楼:匿名用户

::是输出的意思。全部意思是 为m_dataset对象设置一个值,从getconnection 这个方法的返回值里面提取出来。

25楼:凌云紫冥

::是作用域标识符

前面没有任何类的话 说明是全局的

::getconnection() 以这个函数的返回值作为setconnection的参数

26楼:匿名用户

域作用符~例如std::endl,说明endl是来自名字空间std这个作用域的~就像一个前缀一样,说明这个东西是来自**的~

27楼:匿名用户

域符号。

a::b 表示b是属于a的。

C++里的继承是什么意思,这个c++类的继承是什么意思

1楼 化冻 继承是指一个对象直接使用另一对象的属性和方法。事实上,我们遇到的很多实体都有继承的含义。例如,若把汽车看成一个实体,它可以分成多个子实体,如 卡车 公共汽车等。这些子实体都具有汽车的特性,因此,汽车是它们的 父亲 ,而这些子实体则是汽车的 孩子 。如果一个类a继承自另一个类b,就把这个a...

C++中,类的protected究竟有什么作用

1楼 匿名用户 声明 private protected public 继承private x x x protected x o o public x o o 类外调用 x x o 由上图可见protected和public的区别 在类外调用时,可以调用public成员 但是不能调用protect...

java"建立的类名前加《t》是什么意思,有什么作用

1楼 匿名用户 java的泛型 也就是说可以是任意的类型这是个接口定义 inte ce 既然是接口 它的实现都可以执行snatchresult来实现接口声明了t 那就可以在实现时 按需用不同的类型定义 比如说通过它的接口实现的类 list 可以是 也可以是 2楼 匿名用户 这是泛型知识点,这样的话,...