C++类与对象的一些知识

1.复制构造函数

形如X::X(X&)或X:X(const X&)的构造函数。它只能有一个参数,即同类对象的引用。
如果没有自己定义,系统生成默认的复制构造函数,完成复制功能。

它仅在下面三种情况下起作用:

  1. 当用一个对象去初始化同类的另一个对象
    Complex c2(c1);
    Complex c2 = c1;
    
  2. 某个函数有参数是类A的对象,则该函数被调用时,类A的复制构造函数也被调用。
    void Func(A a1){}
    int main(){
    	A a2;
    	Func(a2);
    	return 0;
    }
    
  3. 函数返回值是类A的对象,函数返回时,A的复制构造函数被调用。
    A func(){
    	A b(4);
    	return b; //返回了A的对象
    }
    int main(){Func();}//此时类A的复制构造函数也会被调用。
    
2.类型转换构造函数

话不多说,直接上例子
在这里插入图片描述
c1 = 9,其就相当于 c1 = Complex(9);

3.静态成员函数/变量

实际上就是全局函数和变量。设计这一概念主要为了增强某些变量与类的关联性。
静态成员函数并不具体作用与某个对象。静态成员变量占一份地址,为所有对象共享。

class A{
	private:
		int x,y;
		static int totalX;
		static int totalY;
	public:
		static void printTotal();
}

记住一点,sizeof运算符不会计算静态的成员变量。

4. 友元函数/类

1.友元函数

class A{
	public:
		void aFunc(B* b);
};
class B{
	private:
		int p;
		friend int bFunc(int x);//全局函数
		friend void A::aFunc(B *b);//在class B中声明友元,bFunc和aFunc都可以访问classB的私有成员
		一个类的友元函数可以访问该类的私有成员
}

2.友元类

class A{
	private:
		int p;
	friend class B;//声明B是它的友元类
}
class B{
	public:
		A a;
		void funcB(){
			a.p+=100;//B是A的友元类,所以B中的成员函数可以访问A的私有成员
		}

注意:

  1. 声明友元,在被当做友元的类中声明,即我宣布谁是我的朋友。
  2. 友元关系不能传递和继承。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值