C++的一些知识

C++中的一些知识

C++中的引用和指针的区别

1 引用是变量的别名 必须初始化 指针没有强制要求

2 引用在初始化引用了一次后 不可以在引用别的 指针还可以被赋值其他的

3 指针需要解引用 但是引用是编译器自己处理

4 指针可以是NULL 引用不可以是NULL

5 引用在C++中用的更多 主要原因如下

1.输出型参数。

2.减少拷贝,提高效率。

6 引用和指针都一样 都是指向的同一块空间 通过引用和指针改变都可以改变原来的数据

int a = 10;
int &b = a;//b就是a的引用
b = 1;
cout << b << endl;//输出结果是1
cout << a << endl;//输出结果也是1 
二 友元 friend

通过在类中的声明 声明前加一个friend 就可以在访问类中的私有的成员变量

class cc
{
	//在类里声明 在声明前加个friend 类外函数就可以访问类中的私有的成员变量
	friend void abc(cc* cc);

public:
	 cc()
	{
		public_room = "客厅";
		private_room = "卧室";
	}

public:
	string public_room;

private:
	string private_room;
};


//全局函数
void abc(cc *cc)
{
	cout << "全局函数 正在访问 : " << cc->public_room <<endl;

	cout << "全局函数 正在访问 : " << cc->private_room <<endl;

}

void test4()
{
	cc c1;
	abc(&c1);//这样可以正常访问
	
}
三 const的使用

1 const修饰的变量或者对象不可改变 但是mutable关键字可以修改

2 const修饰的函数 叫常函数 对象在调用这个函数的时候状态会被保护 数据不被改变 在常函数内 对象的数据无法被改变 除非加mutable关键字

#include <iostream>
using namespace std;

class a
{
 public:
    
    a(){}
    
    void function() const//常函数
    {
         this.name = "zhuzhu";//这是错误的 因为这是常函数 对象的数据无法被修改
         this.age = 10;//这里可以被修改因为加了mutable关键字
    }
    
    string name;
    mutable int age;
};

int main()
{
    
    system("pause");
    return 0;
}

3 常对象

class a
{
 public:
    
    a(){}
    
    void function() const//常函数
    {
         this.name = "zhuzhu";//这是错误的 因为这是常函数 对象的数据无法被修改
         this.age = 10;//这里可以被修改因为加了mutable关键字
    }
    
    void fun()
    {
        
    }
    
    string name;
    mutable int age;
};

int main()
{
    const a a1;
    a1.name = "zhuzhu";//这是错误的 常对象的数据是不可更改的
    a1.age = 10;//这是可以的 因为加了mutable关键字 可以更改
    
    a1.function();//常对象只能访问常函数
    a1.fun();//无法访问
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值