构造函数中的new和成员声明中的new有什么区别?
示例
public class PspGame {
private List<string>name = new List<string>();
private List<string>_value;
public PspGame() {
_value = new List<string>();
}
}
最好的方法是什么?是否存在任何性能问题?
使用运算符new()创建C类的新对象会在以下方面出现错误:
class C
{
public:
C() {}
virtual ~C() {}
void operator delete(void*) = delete;
};
int main()
{
C* c = new C;
}
用C2280: 'void C::operator delete(void *)': function was explicitly deleted
但是,当我用C() {}替换C() = default;或删除行以便编译器插入默认构造函数(我认为这与= defa
在Delphi记录中,构造函数调用和过程调用之间的行为有区别吗?我有一个想要转换为D2009的D2010代码示例(我正在使用它)。该示例使用无参数构造函数,这在Delphi2009中是不允许的。如果我替换一个简单的无参数过程调用,记录有什么函数上的区别吗?
也就是说。
TVector = record
private
FImpl: IVector;
public
constructor Create; // not allowed in D2009
end;
变成了
TVector = record
private
FImpl: IVec
struct B {
B () {}
B(int i) {}
};
struct D : B {
using B::B; // <--- new C++11 feature
};
D d1; // ok
D d2(3); // ok
现在,如果我在struct D的主体中添加一个新的构造函数,比如:
struct D : B {
using B::B;
D(const char* pc) {} // <--- added
};
然后D d1;开始给出编译器错误(还没有升级,我正在使用g++ 4.8.0)?然而,D d2(3);仍然可以工作。
为什么在st
关于类、结构和联合,我有一些疑问要澄清。我知道class和struct被认为是对象。我想检查一下联合是否也被认为是对象。因此,我可以在里面有一个构造函数?
union ABC
{
ABC() {};
int x;
}A, B, C
因为我有对象名。我可以这么做吗?
Union ABC obj1(); //Call constructor?
A.x; //Variable accessing the member
???其次,如果我使用typedef联合。A、B、C是什么意思?我可以这样做吗?
union ABC obj1();
A.x;
typedef union ABC
{
Demo1和Demo2在下面的代码中有区别吗?
#include <iostream>
class Base {};
class Demo1 : public Base {
public:
Demo1() : instance_variable(5) {
}
int instance_variable;
};
class Demo2 : public Base {
public:
Demo2() {
this->instance_variable = 5;
}
int instance_variabl
可能重复:
假设这是我的自定义对象:
public class MyObject {
public string Name { get; set; }
public int number { get; set; }
public MyObject() {
}
}
这个对象可以定义泛型,也可以使用自定义构造函数和更多的元素来定义,因此我们可以用两种语法创建一个实例并设置属性。
MyObject newObj1 = new MyObject { Name = "MyName", number = 10 };
MyObject newObj2
可能重复:
这是初始化类变量的正确方法。1和2的区别是什么?
//[1]
public class Person
{
private int mPersonID = 0;
private string mPersonName = "";
}
或
//[2]
public class Person
{
private int mPersonID = 0;
private string mPersonName = "";
public Person()
{
InitializePe
package test;
public class Employee {
String name;
int age;
Employee() {}
Employee(String newName, int newAge) {
this();
name = newName;
age = newAge;
}
public static void main(String args[]) {
Employee e = new Employee("N
为什么这样做:
#include<iostream>
using namespace std;
class student{
int rollNumber;
int age;
public :
student(){
}
};
int main(){
student const s;
}
但这不管用吗?
#include<iostream>
using namespace std;
class student{
int rollNumber;
int age;
};
int main(){
Data1和Data2的实例具有不同功能的解释是什么?
Data1类的对象实例化的行编译时没有问题,但Data2 get行的错误是“右侧必须是左侧的一个子类型”。
class Data1
let _x: U8 = 0
class Data2
let _x: U8
new create() => _x = 0
actor Main
new create(env: Env) =>
let d1: Data1 iso = Data1
let d2: Data2 iso = Data2
我有这个密码。我不太精通C++,所以我要问几个问题:
#include <iostream>
using namespace std;
class Line {
public:
int getLength( void );
Line( int len ); // simple constructor
Line( const Line &obj); // copy constructor
~Line(); // destructor
priva
class B
{
public:
B(char c = 'a') : m_c(c) {}
public:
fun();
private:
char m_c;
};
class C: virtual public B
{ };
class D: virtual public B
{ };
class E
: public C
, public D
{ };
我只是想知道“虚拟”关键字是如何帮助E类只有一个B类副本的?虚拟关键字在“类C”中做了什么,以便它在以后影响它的派生类(正如你可以理解的那样,我只是试图理解虚拟继承的基本工作
我知道,您可以压制“无效果的表达式”,警告将一个表达式转换为无效:
int main()
{
void(2+3);
}
如果我没有错,抛出要空的东西的意思不是将表达式转换为void类型的对象(void是一个没有对象的类型,或者更好的说,是一个空集),而是告诉编译器我们希望忽略表达式的值。其他相关样本:
int main()
{
(void)(2+3);
}
这和另一个样本有什么语义上的区别吗?
最后:
int main()
{
void();
}
它不返回警告(在这里,Coliru 充满了pedantic.related选项);但是,另一个则会生成一个错误:
int m
我想了解在使用最终变量时缺少的是什么。我在谷歌上搜索了很多关于这种奇怪的行为(至少对我来说是这样),并且很想知道幕后发生了什么。
规范说:变量可以声明为最终变量。最后一个变量只能分配给一次。声明变量> final可以作为有用的文档,它的值不会改变,并有助于避免编程>错误。
如果最后一个变量被赋值给它,则这是一个编译时错误,除非它肯定是未赋值的(§16) >在赋值之前。
空白终结符是一个最终变量,其声明缺乏初始化器.
现在考虑以下代码:
public class Sample {
private final int a;
private final Ob
下面两种情况的区别是什么:
class Data
{
PersonDataContext persons = new PersonDataContext();
public Data() {}
}
对比
class Data
{
PersonDataContext persons;
public Data()
{
persons = new PersonDataContext();
}
}
我在asp.net中也有同样的问题:
public partial class Data : System.Web.UI.Page
{