class phone {
public:
phone(int x) { num = x; }
int number(void) { return num; }
void number(int x) { num = x; }
private:
int num;
};
int main(void)
{
phone p1(10);
p1 = 20; // here!
return 0;
}
Run Code Online (Sandbox Code Playgroud)
嗨,大家好
我刚刚宣布了一个类似上面的简单类.
之后我将int值赋给了该类的对象,然后就可以了!
(我打印了它的价值.它存放得当)
如果没有带有int参数的构造,则发生编译错误.
所以,我认为它与构造函数有关.是对的吗?
请给我一个很好的解释.
谢谢.
我试图使用for循环声明变量,然后测试cols和rols是否相同.如果是,它将运行递归函数.但是,我在javascript中做的很麻烦.有人可以帮忙吗?
现在,它说,意想不到的变化==进行比较时,col.1和col.2.我也尝试col+j过for循环,但确实如此invalid left-hand side assignment
for (var i = 0; i < 2; i++) {
var col = {};
col.i = Math.floor(Math.random() * cols);
col.i = Math.floor(Math.random() * rows);
}
if (col.1 == col.2 && row.1 == row.2) {
return this.getRandomBlock();
}
Run Code Online (Sandbox Code Playgroud) 我是JAVA编程的新手.我在书中看过
String a="Hello";
String b="Hello";
System.out.println(a==b);
Run Code Online (Sandbox Code Playgroud)
这应该返回false,因为a&b引用String对象的不同实例.
Bcoz赋值运算符比较对象的实例,但我仍然得到一个真实的.
我正在使用Eclipse IDE.
书中的例子如下:
String s = "s";
String sToo = "s";
System.out.println(a == b);
System.out.println(s == sToo);
Run Code Online (Sandbox Code Playgroud)
对于s == sToo,该位代码打印"false".那是因为s和sToo是对String对象的不同实例的引用.因此,即使它们具有相同的值,它们在相等运算符的眼中也是不相等的.此外,s =="s"打印为false,因为字符串文字产生String类的另一个实例.
书名:JAVA 7 for Absolute Beginners
当我们定义复制构造函数时,是否需要清除我们正在编写的对象的内容?我正在实现一个二叉搜索树,并想知道我是否会有内存泄漏,除非我在实现复制构造函数和赋值运算符时清理它.
假设我有一个(不可变的)矩阵类,它在构造函数中动态创建一个数组,并在解构器中删除它.
template <typename T>
class matrix {
private:
T* data;
public:
size_t const rows, cols;
matrix(size_t rows, size_t cols) : rows(rows), cols(cols) {
data = new T[rows*cols];
}
~matrix() {
delete [] data;
}
//access data
T& operator()(size_t row, size_t col) {
return data[row*cols + col];
}
matrix<T>& operator=(const matrix<T>& other) {
//what will this->data contain? do I need to delete anything here?
//should I call the constructor?
rows = other.rows;
cols = other.cols;
data = new T[rows*cols];
std::copy(&data[0],&data[0] + …Run Code Online (Sandbox Code Playgroud) 我不确切地知道从这种结构中返回真假的案例.你能描述一下吗?Sry,如果是谷歌搜索,我还没找到.
( (struct->param = param_init()) == NULL )
Run Code Online (Sandbox Code Playgroud) 对于标量值,赋值运算符似乎将右侧的值复制到左侧。这对复合数据类型有何作用?例如,如果我有一个嵌套结构
struct inner {
int b;
};
struct outer {
struct inner a;
};
int main() {
struct outer s1 = { .a = {.b=1}};
struct outer s2 = s1;
}
Run Code Online (Sandbox Code Playgroud)
通过实验似乎确实如此,但是有人可以指出行为的规范吗?
当我定义一个类时,如果我需要深拷贝,我需要定义我自己的拷贝构造函数。那么,是否也需要定义赋值运算符呢?如果跳过,赋值是否做浅拷贝?
假设我有以下结构
template<typenameT>
class Foo
{
T value;
public:
// some public logic
}
Run Code Online (Sandbox Code Playgroud)
在这一点上我想要的就是能够说
Foo<int> A;
Run Code Online (Sandbox Code Playgroud)
然后从中获取值,A就好像它“只是 T 类型的值”一样,并按如下方式使用它
int val1 = A; // must correspond to int val1 = A.value
// and
int& val2 = A; // must return reference of A.value and so on
Run Code Online (Sandbox Code Playgroud)
我真的不想用户设置/获取,因为我将经常编写此类调用并希望尽可能简化代码。
首先,我认为重载 = 可能会有所帮助,但我没有做对。它与赋值运算符相反,例如Foo<int> A; int val = 1; A = val;
编辑:网上肯定有答案,但我在“赋值”关键字下找不到它。
想象我有一个这样的课程:
public:
A(const int a);
A& operator = (const A&);
};
Run Code Online (Sandbox Code Playgroud)
为什么“=”运算符的返回类型必须是“A&”而不是简单的“A”?