最全C++知识点--类

1 定义在类内部的函数是隐式inline函数的。尽管所有成员都必须在类的内部申明,但是成员函数体可以定义在类内也可以定义在类外。

2 定义一个返回this对象的函数

class Sales_data {

    std::string isbn() const {

        return bookNo;

    }

    Sales_data &combine(const Sales_data &);

    double avg_price() const;

    std::string bookNo;

    unsigned units_sold = 0;

    double revenue = 0.0;

};

Sales_data add(const Sales_data &, const Sales_data &);

std::ostream &print(std::ostream &, const Sales_data &);

std::istream &read(std::istream &, Sales_data &);

Sales_data& Sales_data::combine(const Sales_data &rhs) {

    units_sold+=rhs.units_sold;

    revenue+=rhs.revenue;

    return *this;

}

3 每个类都分别定义它的对象被初始化的方式,类通过一个或几个特殊的成员函数来控制其对象的初始化过程,这些函数叫做构造函数。

构造函数的名字和类名相同,构造函数没有返回值。类可以包含多个构造函数,不同的构造函数之间在参数数量或参数类型上有区别。

构造函数不能被声明成const。

当类没有声明任何构造函数时,编译器会自动生成默认构造函数。

4 访问控制和封装

定义在public说明符后的成员在整个程序内可被访问;

定义在private说明符后的成员可以被类成员函数访问,但是不能使用该类的代码访问;

struct关键字,成员都是public,class关键字,成员默认是private;

5 友元

类可以允许其他类或者函数访问它的非公有成员,方法是令其他类或函数成为它的友元。

友元是当非成员函数需要访问类私有化成员时,但是这样会破坏类的封装性。

6 一个const成员函数如果以引用的形式返回*this,那么它的返回类型将是常量引用。

7 抑制构造函数定义的隐式转换

可以通过构造函数声明为explicit加以阻止;

发生隐式转换的一种情况是当我们执行拷贝形式的初始化时,此时我们只能使用直接初始化而不能使用explicit构造函数;

Sales_data item1(null_booke);

Sales_data item2=null_book; //不能将explicit构造函数用于拷贝形式初始化过程;

构造函数不能是const的,但字面值常量类的构造函数可以是constexpr的;

8 静态成员独立于任何对象。

静态成员可以是不完全类型,静态数据成员的类型可以是它的类类型。而非静态数据成员受到限制,只能声明成所属类的指针或引用;

Class Bar{

Static Bar mem1; //正确

Bar *mem2;//指针可以是不完全类型

Bar mem3;//错误,数据成员必须是完全类型

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值