这样的事情之间有什么区别
friend Circle copy(const Circle &);
Run Code Online (Sandbox Code Playgroud)
和这样的事情
friend Circle copy(Circle&) const;
Run Code Online (Sandbox Code Playgroud)
我知道const后,函数被用来告诉编译器这个函数不会尝试更改它被调用的对象,那么另一个呢?
我有以下汇编代码片段,我试图理解.它是MC68332微控制器的组件.
LOOP
some instructions
some more instructions
BEQ LOOP
Run Code Online (Sandbox Code Playgroud)
我用google搜索BEQ,我发现它意味着在结果为零的分支,但我仍然不明白它的作用.它是否将最后一条指令的结果与0进行比较,如果为0,则返回到LOOP线?
假设我有一个名为Foo的课程.Foo没有默认构造函数.它有一个构造函数Foo(int x,float y).
Bar是一个容器类.它包含一个包含Foo实例的向量.
Bar::Bar(int numberOfFoos, int x, float y) {
foovector.resize (numberOfFoos);
for(int i = 0; i < numberOfFoos; i++) {
**read below**
}
Run Code Online (Sandbox Code Playgroud)
在这一点上,我想调用Foo的构造函数并将参数int x和float y传递给它.Foo的构造函数根据x和y的值做不同的事情.
假设Foo有一个默认构造函数,调整大小矢量函数究竟做了什么?它是否只是在不调用默认构造函数的情况下调整向量的大小?换句话说,是为Foo类型的n个元素保留的空间,但是它们没有被初始化为任何东西?
如果它没有,如果在这种情况下怎么办?
在for循环中我想以这种方式初始化每个Foo元素:
foovector[i].Foo(int x, float y);
Run Code Online (Sandbox Code Playgroud)
但是我不能以这种方式使用点访问运算符来调用构造函数.我现在甚至都不知道构造函数是否已经被resize函数调用过.
问题是,我该怎么办?
关于类向量的另一个相关问题:
在Foo中有一个包含浮点数的向量.float x参数是它应该保持的浮点数.Foo的构造函数有一条线
arrayofFloats.resize (x);
Run Code Online (Sandbox Code Playgroud)
但这意味着计算机事先并不知道Foo的大小.每个foo可以有不同的大小.它不会导致Foo的矢量问题吗?如果每个Foo可以有不同的大小,如何声明特定大小的向量?
抱歉英语不好,我希望它已经足够清楚了.
谢谢.
这是一个类,它基本上是一个数字数组,我想在其上执行一些操作.
class MyClass {
public:
MyClass() { //constructor
int * array = new int[n];
for(int i = 0; i < n; i++) {
array[i] = i*i;
}
} //end constructor
int displayIthElement(int i) {
return array[i];
}
}
Run Code Online (Sandbox Code Playgroud)
我得到:错误,在displayIthElement函数中未定义标识符"array".就像数组数组在构造函数之外停止存在一样,这没有任何意义.问题是什么?
非常感谢你.
我有一个名为Bar的类,在这个类Bar中有一个类型为Foo的对象(一个类).Class Bar有3个参数,x,y和z.Foo有2个参数y和z.
目前我这样做:
class Bar {
public:
Bar(int x, int y, int z) {
foo = new Foo(y, z);
do something with x;
}
private:
Foo * foo;
};
Run Code Online (Sandbox Code Playgroud)
我记得在一本书中看到另一种使用冒号的方法,但我不记得究竟是怎么回事.
做这样的事情的标准或通常方式是什么?
以下是什么意思?
class Something
{
public:
int m_nValue;
const int& GetValue() const { return m_nValue; }
int& GetValue() { return m_nValue; }
};
Run Code Online (Sandbox Code Playgroud)
此代码取自此处.
我有一个类对象的向量.函数随机选择两个元素并返回其地址.
现在使用这两个元素,我想生成同一个类的两个新对象,并使用push_back将它们添加到向量中.
这是两个父元素的地址:
这里没问题.然后生成第一个子对象,并使用vector_pushback将其添加到向量的末尾.问题是,在执行了push_back命令之后,似乎父对象的地址发生了变化.这是push_back之后的调试器状态:
正如您所看到的,地址显然保持不变,但看起来它们指向push_back之后的垃圾值.据我所知,push_back在向量的末尾添加了一个元素.因此,我希望2个元素的地址根本不会改变.
怎么了?