假设我设置了一个C++类,如下所示:
class Foo{
public:
struct Pair{
int x;
int y;
Pair(){ x = 2; y = 4; }
};
private:
Pair pairArr[16];
}
如果不以其他方式初始化pairArr,那么它内部的一对结构的默认值是什么?C++是调用构造函数(用x=2、y=4初始化构造函数),还是尚未创建对象,在我自己初始化索引之前,留给我一个“垃圾”对象数组?
我知道如果它是一个原始数据类型的数组,它们是默认初始化的(如果我有一个ints数组,它
我在C++中有以下struct,我想知道当我按如下方式使用它时是否需要为它定义一个非默认构造函数:boost::shared_ptr<node> p_node = boost:shared_ptr<node>();
struct node
{
std::string name;
std::map<std::string, std::vector<variant> > values; // it is possible that nodes contain as a value, key/value pairs so we need
来自于Java/C#背景,需要一些帮助来理解C++中正在发生的事情.
class A {
int x;
public:
A(int x) : x(x){}
void f(int y) {
cout << x + y << endl;
}
};
class B : virtual A {
int x;
public:
B(int x) : A(2*x), x(x) {}
virtual void f(int y){
cout << x + 2*y << en
所有C#初学者都知道class是引用类型,struct是值类型。建议将结构用作简单存储。它们也可以实现接口,但不能从类派生,也不能发挥基类的作用,因为它们具有“值”的性质。
假设我们揭示了一些主要的差异,但有一个问题困扰着我。请看以下代码:
public class SampleClass
{
public void AssignThis(SampleClass data)
{
this = data; //Will not work as "this" is read-only
}
}
这是非常明显的--当然,我们不允许更改对象自己的指
在Java中必须调用基类构造函数吗?在C++中,这是可选的,所以我提出这个问题。
当我扩展ArrayAdapter时,我得到这个错误:"Implicit super constructor ArrayAdapter<String>() is undefined. Must explicitly invoke another constructor"
那么,调用基构造器的目的是什么呢?当我创建对象基类时,构造函数会调用&然后它就会派生正确。
在C/C++中通过值传递结构时,必须复制结构内容。编译器是如何做到这一点的?也就是说,这个副本通常会发出哪些汇编指令?
例如,与调用memcpy相比,它们的速度有多快?
现在考虑这段代码:
struct X { int i, j, k; };
void foo(X x);
void foo( int i, int j, int k);
调用foo(X)和foo(int,int,int)之间有什么区别吗?或者生成的汇编代码可能是相同的(考虑到参数的传递)?
所以我在C++上完全是新手,我决定学习C++,直接跳到面向对象编程。我正在编写一个名为KineticEnergy的类,它有一个构造函数,其参数为x和y,该构造函数被分配给变量mass和velocity。
我有一个名为result()的类方法,它使用它的公式来计算动能。我想从我的构造函数中调用公式中的参数,但我不知道我到底在做什么(糟糕的英语,不知道如何解释)。我收到了类似于"Error x in in this scope“的错误。下面是我写的代码:
#include <iostream>
#include <cmath>
using namespace std
public void populatePrizeArraylist()
{
ArrayList <Prize> prizeArrayList = new ArrayList <Prize>();
// The name of the file which we will read from
File filename = new File("prizes.txt");
try
{
// Prepare to read from the file, using a Scanner o
我想在我的C++游戏引擎中实现一个继承层次结构,它与Java有一些相似之处:
所有对象都继承自Object类,某些功能由接口提供。
它只是一个类比,它给了我一些好处(,而不是严格的1:1 Java:C++映射,这是不可能的)。
这里的“接口”我指的是一个只有纯虚的、公共的方法的类。我知道它并不是一个严格和精确的定义。
因此,我做了以下几点:
class Object{...};
/* interfaces */
class Nameable : public Object{...};
class Moveable : public Object{...};
class Moveable3D
我之所以提出这个问题,是因为在阅读了许多帖子和答案后,我仍然没有得到我的答案。如果是这样,请将其标记为副本。 我知道在C++中,虚函数是通过虚指针和虚表来实现的。 然而,我不确定C++编译器如何破译在运行时使用哪个虚拟指针? 在下面这个简单的例子中: class Base {
public:
virtual foo() {}
}
class Derived: public Base {
public:
foo() override {}
}
int main() {
D* p_derived = new Derived();
B* p_base = p_deriv
我知道这类问题被问了很多次,我读过关于它的不同答案,以及ISO标准的一些部分。
但是,我仍然需要对所期望的C++标准的确切行为做一些澄清。
假设这一点:
class A
{
public:
A( void ) {}
A( const A & a ) {}
};
class B: public A
{
public:
B( void ) {}
B( const B & b ) {}
};
我知道调用B类的复制构造函数不会调用A类的复制构造函数,我们可以使用初始化列表来正确地完成它。
我还知道如何
我有点困惑,对我来说,以下两个实现是有效的(但我的语法有错误),但我无法让它们中的任何一个工作。这是第一年的C++入门作业,我们不能使用向量(否则它将在很久以前完成.)
我已经完成了我的Student课程,但是现在我必须创建一个容器来存储n个学生。我在想以下两种选择。
1)创建一个学生对象数组:Student arrayOfStudents[20];
我的学生班很简单(因为行太多,所以修改得不一样)。但这个想法是这样的..。
class Student
{
public:
// Constructor for the Book class, take 6 arguments
我必须在Kotlin中存储和更新以下变量
string name;
Array of Class Objects(5)
Array of Int(5)
C++ format:
struct subject
{
string name;
Array of Class Objects(5)
Array of Int(5)
};
vector<subject> sub;
在其他编程语言C/C++ for ex中,我们使用了struct,并将上面的所有内容都放在了上面。
问题:
如何在Kotlin中使用数组、字符串等不同类型的混合存储和更新上述值?数组不会在一段时间内得到更新
在D wiki - 上有一个关于C++接口的页面
它说,您可以链接到C++代码,但不能链接到特殊的方法,包括构造函数、析构函数和运算符重载,因为对象的生存期问题。建议要么使用包装器(并在C/C++端构造对象),要么用D重新实现构造函数。这两种方法都需要做大量工作,有时可能是不可能的。如果您想在您的D程序中使用一些C++库,这是一个很大的问题:例如,您希望使用Qt的QML,并且可以定义与extern(C++)...一起使用的所需的类,但是您仍然需要构造函数和许多包装器(比如dqml项目做的)或移植代码。
但有一种方式看起来很有效。简单的例子:
//class.h
class MyTestCla