一个关于类模板与指针的问题
如下:
class Base
{}
class D_Base :public Base
{}
template<typename T>
class C
{
private
T * m_prt;
}
问题如下:
请大家看看,下面这个表达式是否正确?如何从语法的角度进行解释?
C<Base> db = new D_Base();
[解决办法]
public:
T *m_prt;
db.m_prt = new D_Base();
得引出指针m_prt
[解决办法]
没有C(T*){}这样的构造函数就没办法正确。
[解决办法]
C<Base> db = new D_Base();//左值是c类型对象,右面是D_Base类型对象?这样可以?
[解决办法]
implicit和explicit的区别。
C(T*){}没有加explicit关键字,所以在C<Base> db = new D_Base();中被隐式调用了。
实际上是 C<Base> db(new D_Base());
[解决办法]
去看看c++ prime上面关于explicit关键词的解释
[解决办法]
去看看c++ prime上面关于explicit关键词的解释
[解决办法]
在创建一个简单类对象的时候会调用普通构造函数,db = new D_Base();调用的是赋值构造
[解决办法]