VC++创建类的对象时的问题?

来源:百度知道 编辑:UC知道 时间:2024/05/29 15:08:11
最先在MFC框架中看到 CPaintDC dc(this) 了解是指想当先对象
但是后来又看到有人写的程序是这样的 : CSMTP smtp( m_sServer );//CSMTP 是一个类//smtp就是创建的对象//
问题是:m_sServer是另外一个类的成员变量。怎么解释呢?
创建一个类的实例后加个括号,C++书没见过有这么写的啊?这是什么语法啊?

1.一个类可以有多个构造函数(参数个数和类型必须有不同的地方)
2.每次创建对象不穿参数进去(没括号)就会自动调用默认构造函数创建对象。
3.在定义构造函数的时候通常他的参数已经设置好默认值了,如果需要就应该显式地传参数给构造函数。CSMTP smtp( m_sServer );就是这样一种调用。

CPaintDC dc(this)
CSMTP smtp( m_sServer )
这两个都是正确的。
两个都是创建一个对象实例。在创建对象时都要调用相应类的构造函数,不同类的构造函数需要的参数是不同的。对于CPaintDC 类来说,构造函数需要的是当前所在对象的指针,所以参数就是this;而对于CSMTP 来说,构造函数所需的参数是服务器,所以就是m_sServer 了。这两个在本质上都是一样的。

类的构造函数可以带参数啊,建议你自习看看c++的类

拷贝构造函数,是编译器会默认创建的4个函数之一,除了参数为同类的引用外,其他同构造函数一样
CSMTP smtp(m_sServer)从语意上来讲是构造一个同m_sServer一样的对象