c++学习笔记(一)

C++复数类实现与初学者指南

之前一直在看c++,却没有动手敲过代码,看到多重继承之后决定停一停,开始从头一步一步来,于是照着书上敲了下c++的代码,以复数为例来创建类complex,通过调用该类的成员函数来输出成员变量的值。

#include<iostream>
using namespace std;
class complex
{
	private:
		float real;
		float imag;
	public:
		complex(float x=0,float y=0)
		{
			real=x;
			imag=y;
		}
	~complex()
	{
	}
	complex add(complex x)
	{
		complex z;
		z.real =real+x.real ;
		z.imag =imag+x.imag ;
		return z;
	}
	void show()
	{
		cout<<"real is "<<real<<endl;
		cout<<"imag is "<<imag<<endl;
	} 
};
int main()
{
	complex x(1,2),y(3,4);
	complex z1;
	z1=x.add(y);
	cout<<"z1 is"<<endl;
	z1.show() ;
	return 0;
 } 

class complex创建类conplex,该类成员变量real,imag定义为私有的,构造函数,析构函数,以及成员函数定义为公有的。

通过该例以及前期的c++学习,可以总结一些c++的知识点:

1.#include<>和#include"",使用<>时,系统将直接在系统库函数文件目录下直接寻找该文件,当使用"",系统将首先在用户当前的工作目录寻找该文件,若找不到,再按系统指定的文件查找方式在其他目录中寻找。

2.c++中的结构体定义完就可以直接使用该结构体名定义变量。而不用再加struct。

3.cout,cin分别代替了printf和scanf。

4.在变量前面加const,限定该变量在定义域范围内为常量,当用construction修饰一个函数的形式参数,则限定相应的实际参数在该函数内为常量,即该参数不允许在函数内被修改。

5.c++的函数可以带有缺省参数,调用语句给出函数的参数时,就按该参数调用该函数,当调用语句未给出函数的参数时,就按缺省参数调用该函数。所有非缺省参数应位于所有缺省参数的前边。

6.c++的函数可以进行函数重载,函数重载可以让多个函数拥有同一个名字,根据程序的不同参数选择不同的函数来进行调用,函数重载要求重载的函数至少在参数个数,或参数类型上与已定义的函数不用,如果参数类型和个数相同,仅仅是函数的返回值不同,将无法构成函数重载。且函数重载和缺省参数同时使用,会造成二义性。

7.using namespace std;表示所有标准库函数都在标准命名空间std中进行了定义,其中std表示标准命名空间的名字。该语句在于避免发生重命名的问题。使用::来选择作用域,若已知名称空间zhangsan,其中有变量a,可以使用zhangsan::a来引用a,而不必去管是否在主函数中已定义了a。using可以使某空间名字中所有名字在当前域中可见。

8.主函数中的complex x(1,1);来进行对象的初始化赋值,是通过系统自动调用构造函数来完成的。

9.private之后声明的成员变量和成员函数对外部程序都是不可见得,protected之后的成员变量和成员函数只有在其派生类中可见,public之后的成员变量和成员函数则是对外全部可见的,一般情况下,成员变量设为私有的(这么做正是c++封装性的体现,只提供对外部的接口而不必让用户知道内部是什么,若函数内部改变,但只要接口没变,外部函数就可以继续使用该类),外部函数和构造函数设为公有的,因为对象的定义都是在类之外,所以必须要在类外面运行构造函数来创建成员变量。

10.成员变量不能在被定义时初始化,这是因为不同对象的成员变量各不相同。

11.构造函数必须和类名完全相同,不能有返回类型。

12。成员函数可以访问类中任何变量,无论是private或者protected,但是构造函数和析构函数除外。

13.析构函数用于函数在申请动态内存,即new了新空间时,需要析构函数在delete之后完成一些收尾的工作,且析构函数不能有类型,访问权限一定是public。

14.构造函数和所有成员函数都可以重载,但是析构函数不可以。

15.子对象构造函数的的设计方法:一是显示调用相应的拷贝函数为子对象赋初值,二是显示调用相应的构造函数赋初值。

16.构造函数会在对象被创建时自动运行。

17.static成员变量是整个类都有的一个成员变量,一般为私有,static成员变量必须在应用程序的全局作用域内被初始化,一般在主函数和类之外对其进行初始化赋值。

到此为止,初步学习了c++的对象与类,将来也会慢慢深入,多多敲代码,还是会发现自己的许多不足,加油。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值