相关疑难解决方法(0)

创建一个对象:有或没有`new`

可能重复:
使用new与without实例化对象之间有什么区别

这可能是一个基本问题,可能已经被问过(比方说,这里); 但我还是不明白.所以,让我问一下.

考虑以下C++类:

class Obj{
    char* str;
public:
    Obj(char* s){
        str = s;
        cout << str;
    }
    ~Obj(){
        cout << "Done!\n";
        delete str;        // See the comment of "Loki Astari" below on why this line of code is bad practice
    }
};
Run Code Online (Sandbox Code Playgroud)

以下代码片段之间的区别是什么:

Obj o1 ("Hi\n");
Run Code Online (Sandbox Code Playgroud)

Obj* o2 = new Obj("Hi\n");
Run Code Online (Sandbox Code Playgroud)

为什么前者调用析构函数,但后者不调用(没有显式调用delete)?

哪一个更受欢迎?

c++ constructor destructor new-operator

119
推荐指数
2
解决办法
24万
查看次数

C++对象,动态和静态的区别

以下两种方式创建类对象有什么区别:

class cat 
{
  private: 
     int age; 
  public: 
     cat(); 
}; 


int main(void) 
{
  cat object; // static object 
  cat *pointer = new cat(); // dynamic object 
}
Run Code Online (Sandbox Code Playgroud)

c++

4
推荐指数
1
解决办法
1万
查看次数

C++,构造函数的原因

我有两个问题.

1)构造函数真正做了什么?如果我们在声明实例时不使用构造函数会发生什么?

你能告诉我这两者之间的区别吗?

A a(1,2)

A *a = new A(1,2)
Run Code Online (Sandbox Code Playgroud)

最好的祝福.

c++ constructor

3
推荐指数
1
解决办法
482
查看次数

使用"new"创建对象与创建对象之间的区别.

这两个陈述有什么区别?

stringstream *myStream = new stringstream(s);
Run Code Online (Sandbox Code Playgroud)

stringstream myStream(s);  
Run Code Online (Sandbox Code Playgroud)

我听说首先返回一个指针并"动态"分配内存.但我真的不明白其中的区别.

先感谢您

c++ object

2
推荐指数
1
解决办法
1732
查看次数

为什么不使用"new"运算符创建的对象获取相同的地址

通过这个问题,一个答案说创建的对象在其范围之外被销毁.为了清楚地理解这个概念,我编写了以下代码:

#include <iostream>

using namespace std;

struct Node{
    int val;
    Node *next;
    Node(int x) : val(x) , next(NULL){}
};

int main(){
    for(int i=0;i<10;i++){
        int someval = rand()%100;
        Node somenode = Node(someval);
        printf("Address for object %d is %p \n",i+1, &somenode);
    }
}
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

Address for object 1 is 0x7ffc32ff26b0 
Address for object 2 is 0x7ffc32ff26b0 
Address for object 3 is 0x7ffc32ff26b0 
Address for object 4 is 0x7ffc32ff26b0 
Address for object 5 is 0x7ffc32ff26b0 
Address for object 6 is 0x7ffc32ff26b0 …
Run Code Online (Sandbox Code Playgroud)

c++ new-operator

2
推荐指数
2
解决办法
164
查看次数

c ++:新的Object()和Object()之间有什么区别

所以在C++中你可以使用new关键字实例化对象,否则......

Object o = new Object();
Run Code Online (Sandbox Code Playgroud)

但你也可以这样做

Object o = Object();
Run Code Online (Sandbox Code Playgroud)

b/w两者究竟有什么区别,为什么我会使用另一个呢?

c++ oop class object new-operator

1
推荐指数
1
解决办法
5535
查看次数

标签 统计

c++ ×6

new-operator ×3

constructor ×2

object ×2

class ×1

destructor ×1

oop ×1