简单记录一下最近学到的c++内容
2017-12-18 20:07
281 查看
历经两个月的学习,c++终于学习到了类与对象部分,因为我也学艺不精,所以也写不出什么技术文,只是借此记录一下我最近学到的内容与一些想法来督促自己学习。(主要还是写下来以后看的时候好嘲讽以前还是萌新的自己2333333)
1.类为面向对象的程序设计,可以信息封装的基础。首先,要定义类与对象,用到了一下语句:
class xx
{ pubic:
公有段的数据成员及函数;
protected:
保护段的数据成员及函数;
private:
私有段的数据成员及函数;
};
其中class为定义类时使用的关键字,需要注意的是,在定义时的{}后一定要记得加上“ ; ”。而在类外定义使用成员函数时使用: 返回类型 xx::函数名 (参数表)
例如,我此时定义一个类:
class book
{ public:
int booknumber();
};
当我需要在类外定义其中的成员函数时,语句为:
int book::booknumber()
{
xxxxxxxxxxxxx
}
大致如此。
2.简单的构造函数与析构函数
构造函数与析构函数都是类中特殊的成员函数。构造函数与析构函数都由系统自动调用,不同点在于构造函数在建立类对象时调用,而析构函数在类对象作用域结束时调用。而且在消亡时为先产生的对象后消亡,而且他们都不能被定义在private部分。构造函数的原型为: 类名::类名(参数表); 析构函数的原型为: 类名::~类名();
而当构造函数带参数时,可以用指定的数据来初始化对象的数据成员。下面写一个例子:
class date
{ public:
date(int,int,int);
~date();
void setdate(int y,int m,int d);
void printdate()const;
private:
int year,month,day;
};
date::date(int y,int m,int d)
{
year=y;
month=m;
day=d;
cout<<year<<"/"<<month<<"/"<<day<<" is Taylor's birthday !"<<"\n";
}
date::~date()
{
cout<<"Too late to say happy birthday."<<endl;
}
void date::setdate(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
void date::printdate()const
{
cout<<"Today is "<<year<<"/"<<month<<"/"<<day<< endl;
}
int main()
{
date d(1989,12,13);
d.setdate(2017,12,18);
d.printdate();
}
运行结果为:
1989/12/13 is Taylor's birthday!
Today is 2017/12/18
Too late to say happy birthday. //哎呀因为本人是个霉粉,所以就拿我家霉霉举个栗子。。。
所以带参数的构造函数是有这种操作的。
此外还有一个操作叫“复制构造函数”,用于创建对象时用一个已有的同类型对象的数据对其进行初始化。语句为: 类名::类名(const 类名 & 引用名, ...); 但具体的操作我暂时还没有用到,所以暂时不做记录。
3.类中的其他成员
(1)常成员
常成员的定义用const来约束。常成员中又包含常数据成员、常对象、常成员函数等。
对常数据成员而言,既可以通过在构造函数中直接用常量来初始化,也可以用带参数的构造函数来对常数据成员初始化,这里不做太多解释。
常对象则是在定义对象时以const为前缀的对象,需要注意的是,常对象中的数据在作用域中约束为只读,不可修改。这里也不做过多解释。
常成员函数则是以const为后缀的成员函数,这样的成员函数中的数据也是不能修改的。例如之前写到的 int printdate()const; 就是这样的一个成员函数。
这一部分好像相当简单的样子。。。。。
(2)今天刚学到的新知识:静态成员
当类成员以static声明时,就成为了静态成员。之前一直不太明白所谓的“静态”是什么意思,查过之后才知道“静态”指的是其作用域局部与类。(大佬们别笑话我)
在类中,声明static数据成员和其他数据成员一样不会建立储存空间,而且static数据成员储存空间建立不依赖于对象。
静态成员声明时可以放在private里作为私有静态成员,也可以放在public里作为公有静态成员,需要注意的是作为私有静态成员时不能在main函数中直接访问。
而当成员函数以static声明时,就称为静态成员函数。
举个栗子吧:
class x
{
int datmem;
public:
static void abc();
};
此时我要在类外调用静态成员函数
void m()
{
x obj;
x::abc();
obj.abc();
}
对于x::abc();与obj.abc();都是正确的,都可为静态成员函数的入口地址。
不过对于静态成员这部分,我暂时还没有写过具体的程序,关于具体的写法与想法我会在具体掌握之后再做一次补充。
1.类为面向对象的程序设计,可以信息封装的基础。首先,要定义类与对象,用到了一下语句:
class xx
{ pubic:
公有段的数据成员及函数;
protected:
保护段的数据成员及函数;
private:
私有段的数据成员及函数;
};
其中class为定义类时使用的关键字,需要注意的是,在定义时的{}后一定要记得加上“ ; ”。而在类外定义使用成员函数时使用: 返回类型 xx::函数名 (参数表)
例如,我此时定义一个类:
class book
{ public:
int booknumber();
};
当我需要在类外定义其中的成员函数时,语句为:
int book::booknumber()
{
xxxxxxxxxxxxx
}
大致如此。
2.简单的构造函数与析构函数
构造函数与析构函数都是类中特殊的成员函数。构造函数与析构函数都由系统自动调用,不同点在于构造函数在建立类对象时调用,而析构函数在类对象作用域结束时调用。而且在消亡时为先产生的对象后消亡,而且他们都不能被定义在private部分。构造函数的原型为: 类名::类名(参数表); 析构函数的原型为: 类名::~类名();
而当构造函数带参数时,可以用指定的数据来初始化对象的数据成员。下面写一个例子:
class date
{ public:
date(int,int,int);
~date();
void setdate(int y,int m,int d);
void printdate()const;
private:
int year,month,day;
};
date::date(int y,int m,int d)
{
year=y;
month=m;
day=d;
cout<<year<<"/"<<month<<"/"<<day<<" is Taylor's birthday !"<<"\n";
}
date::~date()
{
cout<<"Too late to say happy birthday."<<endl;
}
void date::setdate(int y,int m,int d)
{
year=y;
month=m;
day=d;
}
void date::printdate()const
{
cout<<"Today is "<<year<<"/"<<month<<"/"<<day<< endl;
}
int main()
{
date d(1989,12,13);
d.setdate(2017,12,18);
d.printdate();
}
运行结果为:
1989/12/13 is Taylor's birthday!
Today is 2017/12/18
Too late to say happy birthday. //哎呀因为本人是个霉粉,所以就拿我家霉霉举个栗子。。。
所以带参数的构造函数是有这种操作的。
此外还有一个操作叫“复制构造函数”,用于创建对象时用一个已有的同类型对象的数据对其进行初始化。语句为: 类名::类名(const 类名 & 引用名, ...); 但具体的操作我暂时还没有用到,所以暂时不做记录。
3.类中的其他成员
(1)常成员
常成员的定义用const来约束。常成员中又包含常数据成员、常对象、常成员函数等。
对常数据成员而言,既可以通过在构造函数中直接用常量来初始化,也可以用带参数的构造函数来对常数据成员初始化,这里不做太多解释。
常对象则是在定义对象时以const为前缀的对象,需要注意的是,常对象中的数据在作用域中约束为只读,不可修改。这里也不做过多解释。
常成员函数则是以const为后缀的成员函数,这样的成员函数中的数据也是不能修改的。例如之前写到的 int printdate()const; 就是这样的一个成员函数。
这一部分好像相当简单的样子。。。。。
(2)今天刚学到的新知识:静态成员
当类成员以static声明时,就成为了静态成员。之前一直不太明白所谓的“静态”是什么意思,查过之后才知道“静态”指的是其作用域局部与类。(大佬们别笑话我)
在类中,声明static数据成员和其他数据成员一样不会建立储存空间,而且static数据成员储存空间建立不依赖于对象。
静态成员声明时可以放在private里作为私有静态成员,也可以放在public里作为公有静态成员,需要注意的是作为私有静态成员时不能在main函数中直接访问。
而当成员函数以static声明时,就称为静态成员函数。
举个栗子吧:
class x
{
int datmem;
public:
static void abc();
};
此时我要在类外调用静态成员函数
void m()
{
x obj;
x::abc();
obj.abc();
}
对于x::abc();与obj.abc();都是正确的,都可为静态成员函数的入口地址。
不过对于静态成员这部分,我暂时还没有写过具体的程序,关于具体的写法与想法我会在具体掌握之后再做一次补充。
相关文章推荐
- 最近要复制一个php的产品成java,简单记录一下php的知识
- 今天复习C++的const,又学到了很多内容,总结一下[原创]
- 简单记录一下phpmyadmin的https配置
- 使用v7包中的recyclerview遇到的问题简单记录一下
- C++ STL 简单记录
- 好长时间没有写博客了,记录一下最近经历
- 最近邻方法进行图像旋转 c++代码 旋转后图像内容无损失
- 最近因为项目需要,需要接入友盟的推送,遇到很多问题,记录一下
- JSTree 更换图标的方法非常简单记录一下当初学的时候被难住了
- 自己学到的C++一些技巧记录
- 记录一下圆周率,最近正在背。
- 最近刚学到容器Vector,就顺便编写了两个简单的小程序
- 记录一下最近的心情
- 《解决问题1000.1》又是I2C驱动问题,产品应用上一个问题,非常简单,也比较典型,记录一下
- 最近做毕业设计发现市场上的Delphi书中关于TArrayField的一个错误理解,这里现简单的提一下以后有时间在好好的研究一下
- 开始学习C语言C++在这里记录自己的成长。简单的两变量交换问题
- 记录一下最近android7.1.1编译出现的问题
- 先记录一下自己最近的积累吧(XSL+XML导出及JS对XML的操作)
- 记录一下mmseg相关内容
- RabbitMQ C++客户端 RabbitMQ Client for Windows/Linux 超简单接收发送接口-最近更新2018-02-28