如何理解 new 类名(参数)

书上说,一共有4种初始化方式,假设有一个teacher类。
teacher a(参数)我懂。
但是teacher *p=new teacher(参数)是什么。
还有假设teacher类里有一个student类的对象stu。

class teacher
{
int name;
student stu
}
则teacher的构造函数里:
teacher(参数):stu(参数)
{//to do}
里的stu是什么鬼..

山之僧智仙
浏览 1698回答 1
1回答

onemoo

teacher a(参数)  这是直接初始化(direct initialize)形式,就是定义了一个teacher变量a,直接调用其构造函数。new是C++关键字,new会在堆中构造一个对象并返回它的指针。new后类型后面括号仍然是调用其构造函数,这也是一种直接初始化。teacher(参数) : stu(参数) {...}  构造函数的参数列表后,加上冒号,后面跟着一列成员变量(初值),这一列成员变量叫构造初始化列表。 它的作用是让这些成员变量用括号中的值来初始化,这会在构造函数的函数体执行前完成。这就是构造函数的特殊形式。你看的书是C++的教程吗?  这些书上都应该讲过啊!
打开App,查看更多内容
随时随地看视频慕课网APP