C++笔记

C++笔记

一,类和对象

1.复制构造函数
形如:x::x(x &a) or x::x(const x &a) (x :类名)

错误:x::x(x)

1.5 移动构造函数
形如:x::x(x &&a)noexcept or x::x(const x &&a) noexcept (x :类名)
2.构造函数
	可以有参数,不能有返回值,用来初始化对象。
3.析构函数
	1.没有参数和返回值,一个类只能有一个析构函数。
	2.形如  “~类名( ){};”
	3.对象数组的每个元素的析构函数都会被调用。
	4.delete运算 会导致析构函数调用。
4.静态成员
	1.关键字:static
	2.静态成员变量本质上是全局变量。
	3.在静态成员函数中,不能访问非静态成员变量 ,也不能调用非静态成员函数。
	4.静态成员变量是为酥所有对象共享的 一共就一份。
    例如:
class xbai{
    int n;
    static int s;
};
sizeof(xbai)=4;
//sizeof 运算符不会计算静态成员变量。
4.1 访问静态成员
	1.类名::成员名
	  xbai::print();
	2.对象名.成员名
	  xbai r; r.print();
	3.指针->成员名
	  xbai *p=&r; p->print();
	4.引用.成员名
	  xbai &re=r;int      n=re.ntotalnumber;
5.成员对象与封闭类

概念:成员对象:一个类的成员变量是另一个类的对象。
封闭类:包含成员对象的类。

封闭类构造函数的初始化表

1.类名::构造函数(参数表):成员变量1(参数表),成员变量2(参数表){ ...  }
2.先执行成员对象的构造函数,在执行封闭类自身的构造函数。析构函数相反(**先构造的,后析构**)
6.友元

friend int x;fried void fund();
friend class**

6.1 友元函数

一个类的友元函数可以访问该类的 私有成员

6.2友元类

A是B的友元类 -> A的成员函数可以访问B的私有成员。
Note:友元类之间的关系,不能传递,不能继承

7.this指针

非静态成员函数中可以直接使用this来代表指向该函数作用的对象的指针。

class complex{
  public:
    double real,imag;
    void printJ(){cout<<real<<" "<<imag;}
    complex (double r,double i):real(r),imag(i)
    {
        cout<<"小柏最帅"<<endl;
    }
    complex addone(){
        this->real++ ;//等价于real+m+;
        this->print();//等价于print();
        return *this;
    }
};

1.可以用来返回当前对象的引用

s& xx(int x){
this->aa=x;
return *this;
}
8.常量对象,常量成员函数,常引用
8.1 常量对象

如果不希望某个对象的值被改变,则定义该对象的时候可以在前面加上const关键字。

class demo{...};
const demo obj;//常量对象 
8.2 常量成员函数

在类的成员函数说明后面可以加const关键字,则该成员函数为 常量成员函数

常量成员函数执行期间不应该修改其所作用的对象
因此,在常量成员函数中不能修改成员变量的值(静态成员变量除外),也不能调用同类的非常量成员函数(静态成员变量除外)。

class sample
{
  public:
    int value;
    void getv() const;
    void func(){};
};
void sample::getv() const
{
    value=0;//wrong
    func();//wrong
}
int main()
{
    const sample o;
    o.value=100;//error 常量对象不可被更改
    o.func();//error 常量对象上不可以执行非常量成员函数
    o.getv();//ok 常量对象上可以执行常量成员函数
    return 0;
}
8.3 常引用
const int &r=n;
r=5;//error
n=4;//ok
9.运算符重载
9.1基本概念

x=y+z 等价于 x=y.operator+(z)

9.2 赋值运算符‘=’的重载
10 常量函数

只有类的成员函数才能定义为常量函数,普通函数则不能定义常量函数

class{
public:
double f()const;//正确
};

int fx()const;//错误

继承

这里写图片描述

基类的成员隐藏,(只是隐藏起来,不代表没有继承)

先调用的是派生类的构造函数,然后是基类的构造函数

基类没有缺省构造函数,派生类必须要在初始化列表中显式给出基类名和参数列表。
基类没有定义构造函数,则派生类也可以不用定义,全部使用缺省构造函数。
基类定义了带有形参表构造函数,派生类就一定定义构造函数。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

帅小柏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值