根据"Inside C++对象模型“,编译器只在以下四种条件中的任何一种为真时才生成副本构造函数(如果不是程序员声明的话):
类包含存在副本构造函数的类的成员对象时(类设计器显式声明(如前一个字符串类,或由编译器合成,如类Word),当类派生自存在副本构造函数的基类时(再次声明或synthesized)When类声明一个或多个虚拟函数,当类派生自一个或多个基类为虚拟的继承链时)。
这意味着如果我有一个只有构造函数的类,那么编译器就不会提供复制构造函数。
让我们举一个例子:
class test
{
test(){}
};
int main()
{
test obj1;
我使用std::pair<string, string>和make_pair()来使用这对字符串创建std::map。但是我得到了以下编译错误:
/opt/rh/devtoolset-7/root/usr/include/c++/7/ext/new_allocator.h:140:22: error: use of deleted function 'std::pair<const std::pair<std::basic_string<char>, std::basic_string<char> >, firmware_data&
当我在c++中工作时,我看到了两种类型的ctor定义。赋值时有什么不同吗?它们中的哪一个有优势,还是仅仅是写作风格?
第一个ctor定义:
class X
{
public:
X(int val):val_(val){}
private:
int val_;
};
第二个ctor定义:
class X
{
public:
X(int val)
{
val_ = val;
}
private:
int val_;
};
我在C++和学习设计模式方面有一个项目(我对C++非常陌生)。我遇到了一种情况,我认为单身人士是解决问题的办法。(现在,在你们走之前等着吧:单身人士是baaaaaad。)让我们全体投票,烧掉那个异端用户!)
我运行了下面的示例:
...but在使用C++ 11版本时出错。
我的问题不是使用Singleton还是不使用Singleton。它已经被覆盖得够多了。
我的问题是:为什么要删除公共构造函数而不是简单地保留私有构造函数?如果它停留在那里,则会发生对已删除构造函数的错误调用。我不明白,这让我很沮丧。有人能为C++新手提供点线索吗?
下面是避免进入另一篇文章的代码:
class S {
p
我必须在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中使用数组、字符串等不同类型的混合存储和更新上述值?数组不会在一段时间内得到更新
我在C++中有一个非常简单的openGL程序。我已经创建了一个球体对象,它只是简单地绘制一个球体。我想要一个在main()中实例化的全局变量,即sphere = Sphere(radius等),然后在draw()中绘制,即sphere.draw(),但C++不允许。或者,如果我在main()中有对球体的引用,那么我不能将它传递给绘图函数,因为我自己还没有定义绘图函数。这个伪代码可能会更好地解释它:
include "sphere.h"
Sphere sphere; <- can't do this for some reason
draw()
{
.
我知道这类问题被问了很多次,我读过关于它的不同答案,以及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++,而且还是个初学者。我在理解为什么会出现逻辑错误或运行时错误时遇到了一些问题。谁能解释一下我做错了什么? 我已经知道一种解决方案,通过删除类A和B中的函数,并在构造函数中简单地定义它,但是如果这是正确的方式,为什么我不能像我所做的那样在其他函数中初始化它呢? #include <stdlib.h>
#include<iostream>
using namespace std;
class A
{
protected:
int x;
public:
void Init()
{
x = 10;
}
};
class B
{
p
我是c++新手,我有两个关于如何调用基本构造函数的查询。
1.)让我们说我的代码看起来有点像这样。
#include<iostream>
using namespace std;
class Base {
public:
Base() { cout<<"Constructor: Base"<<endl; }
virtual ~Base() { cout<<"Destructor : Base"<<endl; }
};
class Derived: public Base
所以我在C++上完全是新手,我决定学习C++,直接跳到面向对象编程。我正在编写一个名为KineticEnergy的类,它有一个构造函数,其参数为x和y,该构造函数被分配给变量mass和velocity。
我有一个名为result()的类方法,它使用它的公式来计算动能。我想从我的构造函数中调用公式中的参数,但我不知道我到底在做什么(糟糕的英语,不知道如何解释)。我收到了类似于"Error x in in this scope“的错误。下面是我写的代码:
#include <iostream>
#include <cmath>
using namespace std
当类拥有线程和互斥对象时,是否存在复制/赋值危险的潜在危险情况,这意味着复制构造函数和分配应该被删除?
请考虑以下示例代码:
class A : B
{
std::thread t;
std::mutex m;
public:
A() : B() {}
virtual ~A()
{
if (t.joinable())
t.join();
}
// Should I delete cctor and assignment operator?
virtual void Method()
当我试图在不可复制但可移动的对象的向量中使用带有微妙继承扭曲的emplace_back时,我遇到了编译器错误,据我所知,这不应该改变问题。
这是合法的C++和这是Visual 2015的错误,还是我犯了一个明显的错误?
#include <vector>
class Base
{
public:
Base() {}
Base(Base&) = delete;
Base& operator= (Base&) = delete;
};
class Test : public Base
{
public:
Test(int i
我试图像这样调用父母的第二个构造函数
abstract class A(val i: Int) {
constructor(c: C) : this(c.i)
}
class B() : A(0) {
constructor(c: C) : super(c) // error is here
}
class C(val i: Int)
但是它会产生Primary constructor call expected错误。子类如何调用父类的辅助构造函数?
可能的重复项:
我这里有一些C++代码:
class demo
{
private:
unsigned char len, *dat;
public:
demo(unsigned char le = 5, unsigned char default) : len(le)
{
dat = new char[len];
for (int i = 0; i <= le; i++)
复制构造函数在c++中是如何工作的
错误1错误C2064: term不会求值为带有1个参数的函数c:\users\thuan\dropbox\homework\CSS342\Lab2\lab2.cpp 26
#include "intset.h"
int main() {
IntSet object1;
IntSet object2(9);
object1(object2); //error here
return 0;
}
//constructor
IntSet::IntSet(int a, int b, int c, int d, int e)
{
num
在C++中模拟最终类时,为什么使用“虚拟”关键字?C++程序,没有任何编译错误来演示可以创建最终类的实例
#include <iostream>
using namespace std;
class Final;
class MakeFinal {
private:
MakeFinal() { cout << "MakeFinal constructor" << endl; }
friend class Final;
};
class Final : virtual MakeFinal {
public:
Fin