啊,我有这样的课:
class A {
public:
A(int *object) {
std::cout << "convert";
}
A(A &object) {
std::cout << "copy";
}
};
Run Code Online (Sandbox Code Playgroud)
在main.cpp中
A a = new int;
Run Code Online (Sandbox Code Playgroud)
然后,当我试图编译它时,我得到了
从'A'类型的右值开始无效初始化类型'A&'的非const引用
但是当我像这样向复制构造函数添加const时:
A(const A &object) {
std::cout << "copy";
}
Run Code Online (Sandbox Code Playgroud)
代码编译和"转换"被调用.它也适用于我删除复制构造函数.为什么会这样呢?我虽然这个例子与复制构造函数无关,因为我们不使用类A的实例来创建另一个.
在这段代码中:
int length = atoi(argv[1]);
char *tab = malloc(length * sizeof(char));
memset(tab, '-', length);
puts(tab);
Run Code Online (Sandbox Code Playgroud)
无论我传递什么价值argv[1],输出都是正确的.例如,argv[1] = "5"我得到-----(五个连字符).
我想知道puts()当我没有在我的数组的末尾放置'\ 0'时如何找到输入字符串的结尾char.
我有这样的代码:
int fun(int());
Run Code Online (Sandbox Code Playgroud)
它到底是做什么的?据我所知,它相当于函数的声明,指向函数
int fun(int (*ptr)())
Run Code Online (Sandbox Code Playgroud)
但我不确定为什么.