草庐IT

c++ - 如果我删除一个类,它的成员变量会自动删除吗?

我一直在研究,没有找到相关的东西,所以我来了。我试图避免内存泄漏,所以我想知道:假设我有一个类MyClass与成员intsa和b,以及一个int数组c,里面填充了一个成员函数:classMyClass{public:inta,b;intc[2];voidsetVariables(){a,b=0;for(inti=0;isetVariables();deletemc;}现在,我调用deletemc后,会a,b,以及c的所有内容也被删除?还是我必须在MyClass的析构函数中明确地这样做? 最佳答案 规则很简单:用new创建的每个对象都

c++ - 必须调用对非静态成员函数的引用

我使用的是C++(不是C++11)。我需要在类中创建一个指向函数的指针。我尝试执行以下操作:voidMyClass::buttonClickedEvent(intbuttonId){//IneedtohaveanaccesstoallmembersofMyClass'sclass}voidMyClass::setEvent(){void(*func)(int);func=buttonClickedEvent;//但是有一个错误:“必须调用对非静态成员函数的引用”。我应该怎么做才能创建指向MyClass成员的指针? 最佳答案 问题在于

c++ - 必须调用对非静态成员函数的引用

我使用的是C++(不是C++11)。我需要在类中创建一个指向函数的指针。我尝试执行以下操作:voidMyClass::buttonClickedEvent(intbuttonId){//IneedtohaveanaccesstoallmembersofMyClass'sclass}voidMyClass::setEvent(){void(*func)(int);func=buttonClickedEvent;//但是有一个错误:“必须调用对非静态成员函数的引用”。我应该怎么做才能创建指向MyClass成员的指针? 最佳答案 问题在于

c++ - 自毁:this->MyClass::~MyClass() vs. this->~MyClass()

在学习C++的过程中,我偶然发现了文章WritingCopyConstructorsandAssignmentOperators它提出了一种机制来避免复制构造函数和赋值运算符之间的代码重复。为了总结/复制该链接的内容,建议的机制是:structUtilityClass{...UtilityClass(UtilityClassconst&rhs):data_(newint(*rhs_.data_)){//nothinglefttodohere}UtilityClass&operator=(UtilityClassconst&rhs){////Leavesalltheworktotheco

c++ - 自毁:this->MyClass::~MyClass() vs. this->~MyClass()

在学习C++的过程中,我偶然发现了文章WritingCopyConstructorsandAssignmentOperators它提出了一种机制来避免复制构造函数和赋值运算符之间的代码重复。为了总结/复制该链接的内容,建议的机制是:structUtilityClass{...UtilityClass(UtilityClassconst&rhs):data_(newint(*rhs_.data_)){//nothinglefttodohere}UtilityClass&operator=(UtilityClassconst&rhs){////Leavesalltheworktotheco

c++ - 我可以在 C++ 中使用 memcpy 来复制没有指针或虚函数的类吗

假设我有一个类,如下所示;classMyClass{public:MyClass();inta,b,c;doublex,y,z;};#definePageSize1000000MyClassArray1[PageSize],Array2[PageSize];如果我的类没有指针或虚方法,那么使用以下内容是否安全?memcpy(Array1,Array2,PageSize*sizeof(MyClass));我问的原因是,我正在处理非常大的分页数据集合,如here所述,其中性能至关重要,而memcpy与迭代分配相比具有显着的性能优势。我怀疑应该没问题,因为“this”指针是一个隐式参数,而不

c++ - 我可以在 C++ 中使用 memcpy 来复制没有指针或虚函数的类吗

假设我有一个类,如下所示;classMyClass{public:MyClass();inta,b,c;doublex,y,z;};#definePageSize1000000MyClassArray1[PageSize],Array2[PageSize];如果我的类没有指针或虚方法,那么使用以下内容是否安全?memcpy(Array1,Array2,PageSize*sizeof(MyClass));我问的原因是,我正在处理非常大的分页数据集合,如here所述,其中性能至关重要,而memcpy与迭代分配相比具有显着的性能优势。我怀疑应该没问题,因为“this”指针是一个隐式参数,而不

c++ - 编译器何时可以推断模板参数?

有时有效,有时无效:templatevoidf(Tt){}templateclassMyClass{public:MyClass(Tt){}};voidtest(){f(5);MyClassmc(5);f(5);MyClassmc(5);//thisdoesn'twork}有没有办法破解上面的例子?IE。强制编译器从构造函数参数推断模板参数。这个问题会在未来得到解决,还是有充分的理由不解决?编译器可以推断模板参数的一般规则是什么? 最佳答案 当可以从模板参数中推断出参数类型时,可以为函数模板推断模板参数所以可以在这里推断:templ

c++ - 编译器何时可以推断模板参数?

有时有效,有时无效:templatevoidf(Tt){}templateclassMyClass{public:MyClass(Tt){}};voidtest(){f(5);MyClassmc(5);f(5);MyClassmc(5);//thisdoesn'twork}有没有办法破解上面的例子?IE。强制编译器从构造函数参数推断模板参数。这个问题会在未来得到解决,还是有充分的理由不解决?编译器可以推断模板参数的一般规则是什么? 最佳答案 当可以从模板参数中推断出参数类型时,可以为函数模板推断模板参数所以可以在这里推断:templ

c++ - 如何删除默认构造函数?

有时我不想提供默认构造函数,也不希望编译器为我的类提供系统默认构造函数。在C++11中,我可以执行以下操作:classMyClass{public:MyClass()=delete;};但目前我的讲师不允许我在作业中这样做。问题是:在C++11之前,有没有办法告诉编译器停止隐式提供默认构造函数? 最佳答案 我会说将其设为私有(private)..类似classMyClass{private:MyClass();}并且没有人(来自类本身或friend类之外)将能够调用默认构造函数。此外,您将拥有三个使用该类的选项:提供参数化构造函数或