C++ int(内置数据类型)是c+中的一个类吗+;?
C++ int(内置数据类型)是c+中的一个类吗+;?,c++,class,C++,Class,intaclass 请考虑下面的代码 #include"iostream" using namespace std; class test{ public: int a; test(int x) { cout<<"In test Constructor"<<endl; a = x; } }; int main() { test *obj = new test(10);// Constructo
int
aclass
请考虑下面的代码
#include"iostream"
using namespace std;
class test{
public:
int a;
test(int x)
{
cout<<"In test Constructor"<<endl;
a = x;
}
};
int main()
{
test *obj = new test(10);// Constructor get called
int *x = new int(10); // Expecting the same if "int" is a class
return 0;
}
#包括“iostream”
使用名称空间std;
课堂测试{
公众:
INTA;
测试(INTX)
{
CUT< P>不,<代码> int <代码>不是<代码>类< /代码>,而<代码> int x = new int(10);< /C> >无效C++语法> < /p>
int* x = new int(5);
...
...
delete x;
这只是创建一个指向int
的指针,而newint(5)
是初始化指针的一种方法
正确的方法应该是删除[]x
不,因为您是用new
分配的,而不是new[]
。正确的方法是intx=5;
或intx(5);
-除非确实需要,否则避免动态分配
Is int a class in c++?
不可以。因为int
不能被继承,不能在其范围内定义函数,并且缺少类必须具有的许多属性
如果我们说:int*x=newint(5);
它会调用
智力
它将用5
初始化新整数。它至少提供了构造函数的效果。但为了学究,它不调用构造函数。对于new int[10]
的情况,它不调用构造函数,10
int的值是实现定义的。但是new int[10]()
将初始化值(即0)到所有10整数
正确的方法应该是delete[]x
否。任何数据类型的正确配对是malloc()/free()
,new/delete
,new[]/delete[]
和new()T/~T()
。其余都是未定义的行为。int
,float
,char
在cpp中都不是类。
您不能键入以下内容:
intx=newint(10);
即使你在这里考虑一个类:
以下内容无效:
x类=新类(10);
Class x=new Class(10);//"new " not "new ...[]"because,
// It is just a single object not array.
...
delete x;//Not delete[] x;because x is not array
你的期望是正确的,但是如果只有当代码> int /Cube >是一个类,但它不是
< P>不,C++的基本类型(<代码> char < /COD>,<代码> INT/COD>,<代码>长,<代码>浮点,<代码>双< /代码>等)不是类。
然而,这种语言的设计方式使得差异几乎可以忽略。最重要的差异是
- 基本类型不能有成员。类可以(并且通常会)
- 无法将基本类型指定为基类
delete new int[5]
是未定义的行为(不一定是内存泄漏)。此外,不,int
不是类(但是new int(10)
会将int
初始化为10
)。请停止戏剧性地编辑问题。可能是int(5)
或int[5]“如果你需要帮助,请下定决心!”卢基安格利奥尔:好的…现在请考虑下面的事情:1. int x= new int(10);它是一个数组,在这种情况下,删除应该是从删除[]。?2.据我所知,new将分配内存,但它将调用一个类的构造函数,那么无论是否调用构造函数,什么是int?1.是的2.int
是内置类型。不是类。这就是分配动态内存的方式。@LuchianGrigore请检查修改后的问题…很抱歉修改,但它会给出一个清晰的picture……和delete[]
用于new[]分配的数组或数据
我已经编辑了语法问题,但问题仍然是一样的。@Luchian,你没有唯一的\U ptr
?太基本的问题?@Amit0440不太可能,语法完全改变了问题。@LuchianGrigore我有一个问题int
我的意思是基本数据类型没有作为类实现,这就是为什么Java(和C++)不是纯粹的面向对象语言吗?我要的是Javaok…..那么int x=new int(10);究竟是如何工作的呢?它根本不工作,因为new
操作符返回一个pointer@Amit0440`int*x=新的int(10);`之所以有效,是因为语言规则说这是动态分配一个值为10的int的有效方法;
…@govindo但是在上面的例子中,类x的construtor被类似地调用为int,会是这样吗?@Amit0440抱歉,我不小心键入了“*”sign@govindo但是如果你仍然选择类*x=新类(10),那么?如果我们调用Class*x=新类(10);
然后它创建一个类型为Class
的指针x,并使用new
操作符初始化并调用类(int)<代码>类的构造函数< >类> <代码> OK…但是我知道C是在C++之前出现的,所以int已经存在,那时根本没有一个类概念…那么基本类型不能有成员意思吗?@ AMIT0440:C遗产并不意味着太多。C++可以被定义为它都是向后压缩的。用C表示所有类型都是类。“不能拥有成员”部分意味着C++中的“<代码> int i=42;I.ToStRew())/Cuff>是无效的。