old problems

博客介绍了C++编程中的几个要点。指出uint固定32位,size_t位数与计算机一致;在构造函数中可使用另一个构造函数初始化成员;写继承自模板基类的模板类时,引用基类成员需告知编译器查找位置;基类纯虚析构函数即使为纯虚仍需定义,供子类调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

并不相同!!

!number%2   !=  !(number%2)
uint size_t

uint
//is short of unsigned int, which is pretty much universally 32 bits
size_t
//is the “size matching the largest possible address range you can use in the machine”
uint 32位不变,size_t跟计算机一样位数。。

在构造函数中使用另一个构造函数来初始化

    class Foo() { ...; }
    //--- erro: mem-initializer of 'Foo::m_val' follows constructor delegation 
    class Foo(int val): Foo() , m_val(val) {}    

由其他构造函数来代理,则默认由另一个构造函数来初始化所有成员
solution:

class Foo(int val):m_val(val) {}
class Foo():Foo(0) {}

使用模板类作为基类

template <class T>
class Base
{
protected:
    T _x;
};

template <class T>
class More: public Base<T>
{
T getX() { return _x; }//在vs中通过编译,g++则编译失败, error:_x未声明
}

写一个继承自模板基类的模板类时,不能直接使用名称来引用基类的成员
需要告诉编译器在哪里查找名称
solution:

template <class T>
class More: public Base<T>
{
T getX() { return this->_x; }
}

纯虚析构函数

在基类中,即使把虚函数作为纯虚函数,仍然需要定义
因为子类必须调用基类的析构函数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值