社区讨论
萌新初学C++,求助变量和传参问题
学术版参与者 7已保存回复 15
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 15 条
- 当前快照
- 1 份
- 快照标识符
- @lo31105i
- 此快照首次捕获于
- 2023/10/23 23:02 2 年前
- 此快照最后确认于
- 2023/10/23 23:02 2 年前
我是真的不理解C++的基本语法,请大佬们救救我。
首先是,一个变量的性质可以有哪些?
我指的,包括但不限于变量类型(
int,long),值类别(gl/r/l/x/pvalue),cv修饰,指针/引用,static与否,还有一些额外的attritube,比如说内存对齐情况等等。它们哪些可以归为一类,这些类还能继续下分吗?请务必讲的细致一些。
其次是,传参时,会保留原始参数的哪些性质?哪些性质又消失了?
再然后,如果我的函数是一个模板函数,那么这个
typename T的T可以包含哪些性质?我知道它可以包含变量类型,cv修饰,引用等内容,但是这些东西有可能会选择性保留,比如说我的函数签名是void f(const T&),那么可能原来带const的参数传进来以后实例化的T就不带const了。这个的规则是什么?最后是,传参应当从哪个角度考虑?比如说我传进去的参数其实是一个引用,那我是否应该针对函数签名是T还是T&还是T&&做出一番分类讨论?引用在这里是作为一个整体还是分开值类别和引用?这里面有没有什么不变的元数据?我应该认为,函数参数作为值传递,引用传递,或者再加上万能引用,应该被分类为不同的东西讨论,还是它们本质上其实是相同的?这之中有没有什么共同性?能不能拯救一下我一团乱麻的脑子?
感谢大佬们。也许我的思考方式就是错的,希望您纠正一下我。您可以不回答全部问题,哪怕只给出一些链接和keyword我也感激不尽。谢谢!
回复
共 15 条回复,欢迎继续交流。
正在加载回复...