c++笔记

1.

构造函数

不管子类有没有定义构造函数时,都会默认调用父类的构造函数

拷贝构造函数

如果子类没有定义拷贝构造,那么会默认调用父类的

如果子类定义了拷贝构造,那么不会默认调用父类,必须自己显式调用


这也就是为什么如果子类自己定义了拷贝构造函数,即使继承自 boost::noncopyable,仍然可以拷贝的道理了

以下代码编译OK

class B: boost::noncopyable
{
public:
    B(){}
    B(const B&){
    }
};
int main()
{
    B b;
    B b2(b);
    return 0;
}

2.

模板一般定义要放在头文件里,否则编译错误

其实模板也可以声明在h里,实现在cpp里,但是前提是在cpp里要实现化它

比如,在h里声明template<class T> void func(T&);

cpp里:

template<class T> void func(T&){}

template void func(int &);

以后客户使用h的时候就不会报错

注:

或者写一个模板特化

template<> void func(int&){}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值