相关疑难解决方法(0)

为什么有些人更喜欢"T const&"而不是"const T&"?

因此,我意识到const T&并且T const&它们是相同的并且都意味着对const T的引用.在这两种情况下,引用也是常量的(与指针不同,引用不能被重新分配).我观察到,在我有点经验的情况下,大多数C++程序员都会使用const T&,但我遇到过一些使用过的人T const&.我const T&之所以使用它只是因为我学到了这一点,所以T const&对我来说看起来有点滑稽.您使用您使用的变体的原因是什么?你们中的任何一个人是否在一个组织工作,其编码标准要求使用一种变体而不是另一种变体?

编辑
根据答案,看来在两者之间进行选择的一个原因是你是想要像编译器(从右到左)还是像英语(从左到右)那样阅读它.如果像编译器一样读取它,则"T const&"读作"&(引用)const(到常量)T(类型T)".如果从左到右读取它像英语,则"const T&"被读作"以引用形式存在的T类型的常量对象".我更喜欢像英文散文一样阅读它,但我当然可以通过编译器的方式来理解它.

没有人回答组织或编码标准问题,但我强烈怀疑大多数组织不会强制要求一个,尽管他们可能会努力保持一致性.

c++ syntax types pointers reference

56
推荐指数
4
解决办法
2万
查看次数

const指针到指针在C和C++中意味着什么?

我知道从右到左阅读声明的经验法则,我很清楚我知道发生了什么,直到一位同事告诉我:

const MyStructure** ppMyStruct;
Run Code Online (Sandbox Code Playgroud)

表示"ppMyStruct是指向(可变)MyStructure的const指针 "(在C++中).

我本以为它意味着"ppMyStruct是一个指向const MyStructure指针的指针 ".我在C++规范中寻找答案,但显然我不是很擅长......

在C++中意味着什么,它在C中意味着什么?

c c++ pointers const

42
推荐指数
5
解决办法
2万
查看次数

Const之前或之后的类型?

我有以下代码:

string const& operator[] (size_t index) const { return elems[index]; }
Run Code Online (Sandbox Code Playgroud)

不应该是:

const string&
Run Code Online (Sandbox Code Playgroud)

c++

7
推荐指数
2
解决办法
3435
查看次数

无法将左值绑定到A <Cv2> &&

我认为通用引用(T&&)应该采用任何类型的引用.但以下不起作用.

当我尝试在我正在编写的库中进行const-correct时,我遇到了这个问题.我是C++的新手,之前没见过这样的东西.

TEST.CPP:

enum Cv_qualifier {
    constant,
    non_const
};
template <Cv_qualifier Cv> class A;
template<>
class A<Cv_qualifier::constant> {
public:
    template<Cv_qualifier Cv2> 
    void t(const A<Cv2>&& out) {}
};

template <>
class A<Cv_qualifier::non_const> {
public:
    template<Cv_qualifier Cv2> 
    void t(const A<Cv2>&& out) {}
};

int main()
{
    A<Cv_qualifier::non_const> a;
    A<Cv_qualifier::constant> b;
    a.t(b);
}
Run Code Online (Sandbox Code Playgroud)

错误(编译g++ test.cpp -std=c++11):

test.cpp: In function ‘int main()’:
test.cpp:24:10: error: cannot bind ‘A<(Cv_qualifier)0u>’ lvalue to ‘const A<(Cv_qualifier)0u>&&’
     a.t(b);
          ^
test.cpp:17:10: note:   initializing argument 1 of ‘void …
Run Code Online (Sandbox Code Playgroud)

c++ const universal-reference

5
推荐指数
1
解决办法
3264
查看次数

澄清并记住 C 中 const 的用法

argv 是指向字符的常量指针数组

char * const argv[] // 1
Run Code Online (Sandbox Code Playgroud)

argv 是指向字符的指针数组,这些字符是常量

const char * argv[] // 2
Run Code Online (Sandbox Code Playgroud)

有什么技巧可以记住第一条吗?

c

4
推荐指数
1
解决办法
294
查看次数

为什么打印的价值是25?不应该是内存位置值?

我正在使用c谜题,并遇到了这个问题.在这里,一个at printf语句指针增加一次,所以我认为它将指向随机数!但我不明白为什么25是输出?谁有人可以帮我理解?提前谢谢了;)

void main()

{

      int  const * p=5;

      printf("%d",++(*p));

}
Run Code Online (Sandbox Code Playgroud)

答案:25

c

-4
推荐指数
1
解决办法
164
查看次数

标签 统计

c++ ×4

c ×3

const ×2

pointers ×2

reference ×1

syntax ×1

types ×1

universal-reference ×1