栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++学习笔记(一)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++学习笔记(一)

C++学习笔记

提示:本笔记是个人学习侯捷C++课程的总结笔记,欢迎来信指正批评!
第一篇 C++基础以及编程规范(一)


文章目录
  • C++学习笔记
  • 一、防卫式声明
  • 二、头文件布局
    • 类的声明和定义
  • 三、模板
  • 四、访问级别
  • 五、构造函数
    • 1.写在public部分,函数名与class名相同,没有返回类型
    • 2.构造函数可以有很多个(重载)
  • 六、参数传递和返回值传递
    • 1.参数传递
    • 2.返回值传递
  • 六、friend友元
  • 总结


提示:以下是本篇文章正文内容,下面案例可供参考

一、防卫式声明
#ifndef __COMPLEX__
#define __COMPLEX__
……

#endif

若之前未定义COMPLEX时,定义并执行中间代码;若之后再定义COMPLEX时,不会再次定义执行中间代码。

二、头文件布局

头文件布局涵盖:前置声明、类的声明、类的定义。

类的声明和定义

类的声明:

class complex
{
public:
	……
	
	complex& operator+= (const complex&);
	
	double real () const {return re;}
	double imag () const {return im;}
private:
	double re,im;
	……
};

对于不会改变数据内容的函数,一定要加上const修饰符;否则对于常量对象会有异常报错。

{
	const complex c1(2,1);
	cout< 

对于常量c1,存在矛盾逻辑,c1常量无法改变值;但是函数定义若无const意为可以改变,故存在矛盾。


三、模板
template
class complex
{
public:
	……
private:
	T re,im;
	……
};
{
	
	complex c1(2.5,1.5);
	complex c2(2,6);
}
四、访问级别

public:需要外界可以访问
private:只有class内部可以访问,一般数据都需要写在这部分,函数看需求
protect:类内和子类可直接访问,也就是说,基类中有protected成员,子类继承于基类,那么也可以访问基类的protected成员,要是基类private成员,则对于子类也是隐藏的,不可访问。

{
	complex c1(2,1);
	
	cout< 
五、构造函数 
1.写在public部分,函数名与class名相同,没有返回类型 
complex (double r=0,double i=0)
	: re(r),im(i)  
	{ }
2.构造函数可以有很多个(重载)
class complex
{
public:

complex (double r=0,double i=0)
	: re(r),im(i) { }

complex (): re(0),im(0) { }

double real () const {return re;}
private:
	……
};

void real(double r) { re=r;}
六、参数传递和返回值传递
class complex
{
public:
	complex (double r=0,double i=0): re (r),im(i)
	{}
	
	complex& operator += (const complex&);
	
	double real () const {return re;}
private:
	double re,im;
	friend complex& __doapl(complex*,const complex&);
}
1.参数传递
{
	
	complex c1(2,1);
	complex c2;
	
	c2+=c1;
	cout< 
2.返回值传递 
{
	
	complex& operator += (const complex&);
	
	double real () const {return re;}
}

在可以使用返回值引用传递的前提下尽量使用返回值引用传递。
如果函数中存在临时定义变量,在函数结束时该local变量释放故不可引用传递该local变量,故此时返回值传递若为引用则会出错。

六、friend友元

友元函数可以使用class中的私有变量,破坏了一定的封装性,但是速度有所提升。

class complex
{
public:
	……
private:
	……
	friend complex& __doapl(complex*,const complex&);
};
inline complex& __doapl (complex* ths,const complex& r)
{
	ths->re += r.re;
	ths->im += r.im;
	return *ths;
}

相同的class的各个object互为friend

int func(const complex& param)
{ return param.re+param.im; }
总结

C++提高效率的方法总结:
1.数据一定放在private中
2.参数尽可能使用引用传递,看状况选择是否加const
3.返回值尽量以引用传递
4.类的body中的函数,一定先考虑是否加const
5.构造函数一定使用初始列

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955486.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号