C++学习笔记1

一,类的最基本的函数

一个类至少有默认构造函数,拷贝构造函数,拷贝构造运算符,和析构函数四个最基本的函数,在下面的例子中将对这些函数进行讲解。

代码如下:



#include<iostream>
using namespace std;
class SuperOne
{
public:
         SuperOne();//默认构造函数
         SuperOne(intpubSuperOne,int proSuperOne,int priSuperOne);//含参数的构造函数,
         SuperOne(SuperOne & source);//拷贝构造函数
         SuperOne&operator=(SuperOne & source);//拷贝赋值运算符
         ~SuperOne();//析构函数
         int getPubSuperOne();
         int getProSuperOne();
         int getPriSuperOne();
         void setPubSuperOne(int pubSuperOne);
         void setProSuperOne(int proSuperOne);
         void setPriSuperOne(int priSuperOne);
         void PublicSuperOne();
         void Print();
protected:
       void    ProtectedSuperOne();
private:
         void   PrivateSuperOne();
         //Members
public:
         int    pubSuperOne;
protected:
         int    proSuperOne;
private:
         int     priSuperOne;
};
 
SuperOne::SuperOne()
{
         this->pubSuperOne= 0;
         this->proSuperOne= 0;
         this->priSuperOne= 0;
         cout<<"Defaultstructure function is called!"<<endl;
}
 
SuperOne::SuperOne(intpubSuperOne,int proSuperOne,int priSuperOne)
{
         this->pubSuperOne= pubSuperOne;
         this->proSuperOne= proSuperOne;
         this->priSuperOne= priSuperOne;
         cout<<"Structurefunction with three parameters is called!"<<endl;
}
 
SuperOne::SuperOne(SuperOne &source)
{
         this->pubSuperOne= source.pubSuperOne;
         this->proSuperOne= source.getProSuperOne();
         this->priSuperOne= source.getPriSuperOne();
         cout<<"Copystructure function is called!"<<endl;
}
 
SuperOne& SuperOne::operator=(SuperOne & source)
{
         this->pubSuperOne= source.pubSuperOne;
         this->proSuperOne= source.getProSuperOne();
         this->priSuperOne= source.getPriSuperOne();
         cout<<"Copystructure operator is called!"<<endl;
        
         return* this;
}
 
SuperOne::~SuperOne()
{
         cout<<"UnStructurefunction is called!"<<endl;
}
 
void SuperOne::Print()
{
         cout<<"SuperOnedata:\t";
         cout<<this->pubSuperOne<<""<<this->proSuperOne<<""<<this->priSuperOne<<endl;
}
int SuperOne::getPubSuperOne()
{
         returnthis->pubSuperOne;
}
 
void SuperOne::setPubSuperOne(intpubSuperOne)
{
         this->pubSuperOne= pubSuperOne;
}
 
int SuperOne::getProSuperOne()
{
         returnthis->proSuperOne;
}
 
void SuperOne::setProSuperOne(intproSuperOne)
{
         this->proSuperOne= proSuperOne;
}
 
int SuperOne::getPriSuperOne()
{
         returnthis->priSuperOne;
}
 
void SuperOne::setPriSuperOne(intpriSuperOne)
{
   this->priSuperOne = priSuperOne;
}
 
void SuperOne::PublicSuperOne()
{
         cout<<"PublicSuperOne is called!"<<endl;
}
 
void SuperOne::ProtectedSuperOne()
{
         cout<<"ProtectedSuperOne is called!"<<endl;
}
 
void SuperOne::PrivateSuperOne()
{
         cout<<"PrivateSuperOne is called!"<<endl;
}
 


int main()
{
	cout<<"1:\t";
	SuperOne s0;


	cout<<"2:\t";
	SuperOne s1(1,1,1);


	cout<<"3:\t";
	SuperOne s2(s0);


	cout<<"4:\t";
	SuperOne s3 = s1;
  
	cout<<"5:\t";
	s0.Print();


	cout<<"6:\t";
	s1.Print();


    cout<<"7:\t";
	s2.Print();


	cout<<"8:\t";
	s3.Print();


	cout<<"9:\t";
	s1=s0;


	cout<<"10:\t";
	s1.Print();


	cout<<"11:\t";
       SuperOne * s4 = new SuperOne();


	cout<<"12:\t";
	delete s4;


	cout<<"13:\t";
	SuperOne * s5 = new SuperOne(1,2,3);


	cout<<"14:\t";
	delete s5;


	return 1;
}


 

代码讲解:

1,  默认构造函数

声明:类名();比如本例中的SuperOne();注意:没有返回值类型哦

用法: (1),在声明一个对象时被调用,比如1,SuperOne s0;这个时候默认的构造函  数被调用,输出窗口的第  1 行就是。

   (2),在使用new 运算符构造对象时使用,

比如20,SuperOne *s4 = new SuperOne();

输出窗口中第11行就是。

2,  带参数的构造函数

    声明:类名(参数列表);本例中的SuperOne(intpubSuperOne,int proSuperOne,int priSuperOne);//构造函数就是,

用法:(1),用来对类中的数进行初始化,比如4 ,SuperOne s1(1,1,1)

在初始化的时候使用this->指针,比如更好的初始化方法是用下面的风格;

SuperOne::SuperOne(intpub,int pro,int pri)

        :pubSuperOne(pub),proSuperOne(pro),priSuperOne(pri)

{

                      cout<<"Structure functionwith three parameters is called!"<<endl;

}

窗口输出的第 2 行就是。

(2).用new运算符构造对象时使用

比如24,SuperOne *s5 = new SuperOne(1,2,3);

输出窗口中的第 13行就是。

3,  拷贝构造函数

声明:类名(类名 & 变量);本例中的SuperOne(SuperOne& source);//拷贝构造函数用法:用一个类的变量来初始化另一个类的变量,比如6,SuperOne s2(s0);

      输出窗口中的第 3 行就是。

4,拷贝构造运算符;

    声明:类名& operator=(类名 & 变量);

本例中SuperOne&operator=(SuperOne & source);//拷贝赋值运算符

    用法:用一个对象初始化另一个对象,或者用一个对象对象对另一个对象赋值。

  (1),代码 8 ,SuperOnes3 = s1;中是在对象声明是初始化。

      对应的输出为第 4 行

  (2), 代码 17,s1=s0;是对一个已经存在的对象赋值,

      对应的输出为第 9 行。

    注意:如果在对象的声明的时候进行初始化,则调用的是拷贝构造函数。

          如果对象已经初始化过了,则调用拷贝构造函数。

5,析构函数

   声明:~类名();没有返回值哦,并且不能重载,只有一个。

   用法:(1),在对象声明周期结束后被自动调用。

            输出的最后四行就是。

         (2),调用delete 运算符删除对象指针时被调用。

            代码 22 delete s4, 26 delete s5;都是这种用法

            输出的12, 14 就是。

小结:对于C++ 中的类来说,一个类的函数至少有四个即,默认的不带参数的构造函数,默认拷贝构造函数,默认拷贝构造运算符,默认析构函数,如果你没有写,编译器会自动生成,如果你写了,编译器就不自动生成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值