在new实例化一个类时候,实例化后,一定要给对象成员赋值吗?
在new实例化一个类时候,实例化后,一定要给对象成员赋值吗?对象成员是空的不行吗? 你说的是属性赋值吗?如果是类的属性的话,你完全可以再__init__方法再去给其赋值 大马强 发表于 2022-2-26 22:28
你说的是属性赋值吗?
如果是类的属性的话,你完全可以再__init__方法再去给其赋值
不是的,就是一般类的成员 janeyjhon 发表于 2022-2-26 22:36
不是的,就是一般类的成员
c++里面的 janeyjhon 发表于 2022-2-26 22:37
c++里面的
抱歉,没注意看{:10_266:}
c++没咋学,帮不了{:10_284:} 不是很明白你的意思,一般都要看你的构造函数 #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
析构函数
析构函数
析构函数 new一个类就会自动调用其对应的构造函数。
如果在构造函数中没有初始化,后续也没有初始化就使用了,那么它的值是未定义的,也就是说鬼知道它是多少,没有所谓“空的”变量。
页:
[1]