鱼C论坛

 找回密码
 立即注册
查看: 1427|回复: 7

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

[复制链接]
发表于 2022-2-26 22:23:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在new实例化一个类时候,实例化后,一定要给对象成员赋值吗?对象成员是空的不行吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-2-26 22:28:44 | 显示全部楼层
你说的是属性赋值吗?
如果是类的属性的话,你完全可以再__init__方法再去给其赋值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不是的,就是一般类的成员
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-26 22:37:15 | 显示全部楼层
janeyjhon 发表于 2022-2-26 22:36
不是的,就是一般类的成员

c++里面的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-26 23:04:22 | 显示全部楼层

抱歉,没注意看
c++没咋学,帮不了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-26 23:52:07 | 显示全部楼层
不是很明白你的意思,一般都要看你的构造函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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
析构函数
析构函数
析构函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-2-27 11:03:02 | 显示全部楼层
new一个类就会自动调用其对应的构造函数。
如果在构造函数中没有初始化,后续也没有初始化就使用了,那么它的值是未定义的,也就是说鬼知道它是多少,没有所谓“空的”变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 22:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表