janeyjhon 发表于 2022-2-26 22:23:12

在new实例化一个类时候,实例化后,一定要给对象成员赋值吗?

在new实例化一个类时候,实例化后,一定要给对象成员赋值吗?对象成员是空的不行吗?

大马强 发表于 2022-2-26 22:28:44

你说的是属性赋值吗?
如果是类的属性的话,你完全可以再__init__方法再去给其赋值

janeyjhon 发表于 2022-2-26 22:36:43

大马强 发表于 2022-2-26 22:28
你说的是属性赋值吗?
如果是类的属性的话,你完全可以再__init__方法再去给其赋值

不是的,就是一般类的成员

janeyjhon 发表于 2022-2-26 22:37:15

janeyjhon 发表于 2022-2-26 22:36
不是的,就是一般类的成员

c++里面的

大马强 发表于 2022-2-26 23:04:22

janeyjhon 发表于 2022-2-26 22:37
c++里面的

抱歉,没注意看{:10_266:}
c++没咋学,帮不了{:10_284:}

傻眼貓咪 发表于 2022-2-26 23:52:07

不是很明白你的意思,一般都要看你的构造函数

傻眼貓咪 发表于 2022-2-27 00:11:19

#include <iostream>

using namespace std;

class MyClass{
    public:
      int m_x, m_y;
      MyClass();
      MyClass(int, int);
      MyClass(const MyClass &obj);
      ~MyClass();
};

MyClass::MyClass(){
    std::cout << "构造函数 A" << std::endl;
}

MyClass::MyClass(int a, int b): m_x(a), m_y(b){
    std::cout << "构造函数 B" << std::endl;
}

MyClass::MyClass(const MyClass &obj){
    m_x = obj.m_x;
    m_y = obj.m_y;
    std::cout << "拷贝构造函数" << std::endl;
}

MyClass::~MyClass(){
    std::cout << "析构函数" << std::endl;
}


int main()
{
    MyClass A(13, 5); // 成员赋值,调用构造函数 B
    MyClass B = A; // 拷贝,调用拷贝构造函数
    MyClass *C = new MyClass(); // 成员没有赋值,调用构造函数 A
    delete C; // 用 new 必须要有 delete,手动释放内存

    return 0;
}构造函数 B
拷贝构造函数
构造函数 A
析构函数
析构函数
析构函数

lhgzbxhz 发表于 2022-2-27 11:03:02

new一个类就会自动调用其对应的构造函数。
如果在构造函数中没有初始化,后续也没有初始化就使用了,那么它的值是未定义的,也就是说鬼知道它是多少,没有所谓“空的”变量。
页: [1]
查看完整版本: 在new实例化一个类时候,实例化后,一定要给对象成员赋值吗?