C++入门基础语法

#include <iostream>
using namespace std;//使用std块,这样就不需要std::cout这样写了。
class A
{
public:
	A(int a,int b):x1(a),x2(b)
	{
		cout <<"class A a&b: " << a <<" & "<< b <<endl;
		cout <<"class A x1&x2: " << x1 <<" & "<< x2 <<endl;
	};//这里有没分号都可以
	~A(){};
	int x2;
private:
	int x1;
};

class C
{
public:
	C(int a):x1(a),x2(4){};//构造函数
	~C(){};//析构函数
	int x1;
	// friend void B::c_friend();不能在这friend,因为B类在后面还没定义声明
	const int x2;
	static const float x3;//静态要放在类外面定义
	void b_friend();
	//不能在这里实现函数,因为在创建B类对象的时候,会有B类未声明错误。
	//在class C前class B;声明,也不支持创建对象。所以放在了B类后面实现函数。
};
const float C::x3=3.14f;//注意还有个const常量标志

class B : public A
{
public:
	B(int a,int b,int c,int d):A(a,b),c1(c),x1(d){}//冒号语法赋值和传参,int d=1可设定默认参数,设默认参数的得放在后面。
	~B(){};
	C c1;//相当于组合类,创建了C类对象,所以得放在前面先声明。
	// int x2;
	/*如果没有重定义x2,输出的就是A类的x2,继承过来了。
	而A类的x1就继承不了,私有的*/
	void show()
	{
		cout <<"class B x1&x2: " << x1 <<" & "<< x2 <<endl;
	}
	friend void C::b_friend();//友元函数,调用private里的内容
private:
	int x1;
};

void C::b_friend()//注意前面还有C::要不然B不认这个friend
{
	B b1(1,2,3,4);
	cout <<"class B private x1 = " <<b1.x1<<endl;
}

int main(int argc, char const *argv[])
{
	B b1(1,2,3,4);//创建对象时,要传入构造函数需要的参,否则会报错
	/*
	创建对象后,会先调用父构造函数。
	所以B类一定得有构造函数,除非父类没构造函数。
	子类的构造函数给父类构造函数传实参
	最开始的先传给父类构造函数。
	*/
	b1.show();
	cout << "class C x1&x2&x3= " << b1.c1.x1<<" & "<< b1.c1.x2 <<" & "<<b1.c1.x3<<endl;
	b1.c1.b_friend();

	return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值