这是我的第一篇博客!
调用默认构造函数。
如果类里没有写默认构造函数,会使用编译器帮我们生成的,但不会初始化成员变量,如
class NoConstructor //没写构造函数的类
{
public:~NoConstructor() {}void printVal() { cout << m_val << endl; }
private:int m_val;
};NoConstructor* p1 = new NoConstructor;
p1->printVal();`
打印出来的值是 -842150451,也就是未初始化。
调用默认构造函数。
如果类里没有写默认构造函数,会使用编译器帮我们生成的,并且会初始化成员变量,比如 int 类会被初始化为 0
NoConstructor* p2 = new NoConstructor();
p2->printVal();`
此时打印出来值是 0
调用自定义构造函数,或含参数的默认构造函数(如果这两种函数都定义了,它们的arg类型必须不同,这是函数重载的要求)。
关于几个概念:默认构造函数是指无参的构造函数,或有参数(即形参)、并且为所有形参指定了实参的构造函数。
非默认构造函数称为自定义构造函数。
如果在一个类里,两种默认构造函数都写了,那么new ClassName和new ClassName()都不可用。因为编译器无法确定要使用哪一个构造函数。
本文发布于:2024-01-30 19:12:30,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170661320922210.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |