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
a
class

请考虑下面的代码

#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>是无效的。