c++学习笔记.docx

上传人:b****1 文档编号:1245123 上传时间:2023-04-30 格式:DOCX 页数:15 大小:187.74KB
下载 相关 举报
c++学习笔记.docx_第1页
第1页 / 共15页
c++学习笔记.docx_第2页
第2页 / 共15页
c++学习笔记.docx_第3页
第3页 / 共15页
c++学习笔记.docx_第4页
第4页 / 共15页
c++学习笔记.docx_第5页
第5页 / 共15页
c++学习笔记.docx_第6页
第6页 / 共15页
c++学习笔记.docx_第7页
第7页 / 共15页
c++学习笔记.docx_第8页
第8页 / 共15页
c++学习笔记.docx_第9页
第9页 / 共15页
c++学习笔记.docx_第10页
第10页 / 共15页
c++学习笔记.docx_第11页
第11页 / 共15页
c++学习笔记.docx_第12页
第12页 / 共15页
c++学习笔记.docx_第13页
第13页 / 共15页
c++学习笔记.docx_第14页
第14页 / 共15页
c++学习笔记.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

c++学习笔记.docx

《c++学习笔记.docx》由会员分享,可在线阅读,更多相关《c++学习笔记.docx(15页珍藏版)》请在冰点文库上搜索。

c++学习笔记.docx

c++学习笔记

针对vs的一些问题

1、VS2013中使用fopen、sprintf等函数是会出现安全问题:

errorC4996:

'fopen':

Thisfunctionorvariablemaybeunsafe.Considerusingfopen_sinstead.Todisabledeprecation,use_CRT_SECURE_NO_WARNINGS.Seeonlinehelpfordetails.

而报错。

解决方法:

右键工程名-->属性-->C/C++-->预处理器-->预处理器定义,编辑右边输入框加入:

_CRT_SECURE_NO_WARNINGS

保存。

2、不能从constchar*转换为LPCWSTR

在VC6.0中编译成功的项目在VS2005vs2005、vs2008、vs2010中常会出现类型错误。

经常出现的错误是:

不能从constchar*转换为LPCWSTR

如使用MessageBox(hwnd,"TEST",NULL,0)就会报错,如果使用强制转换(LPCWSTR)"TEST",虽然能够通过,但是编码会出错。

可行的办法是使用_T("TEST")转换,或者TEXT("TEST")都可以

MessageBox(hwnd,TEXT("TEST"),NULL,0);

MessageBox(hwnd,_T("TEST"),NULL,0);

或者强制使用ANSI字符MessageBoxA(hwnd,"TEST",NULL,0);

另一种方法是:

项目菜单——项目属性(最后一个)——配置属性——常规——项目默认值——字符集,将使用Unicode字符集改为未设置即可。

3、设置当前操作的项目为默认启动项

右击解决方案-》通用属性–》启动项目-》当前选定内容。

4、在vs2013中出现错误:

未定义标识符ULONG_PTR,BOOL,DWORD,LPCTSTR,HWND等

在文件头部增加:

include头文件WinDef.heg:

#include

5、vs2012下用MFC编程,用CString定义一个对象,m_strLine,希望实现在onChar消息下实现键盘输入一个字符串,就把它加入到m_strLine中,写如下代码

m_strLine+=nChar;会报错;运算符与操作数类型不匹配

因为nChar是UNIT类型的,而m_strLine是CString类型的,不同类型的不能进行加减、赋值等操作,需要改成

m_strLine+=(char)nChar;

6、vs2012删除某个成员函数(不是物理删除就是注释掉而已)

右键点击该成员函数所属的类,选择类向导,在弹出的对话框中选中该成员函数,点击删除处理程序即可达到在成员函数的前面添加注释的效果;

Vs快捷键

Ctrl+K,C:

注释选定内容

Ctrl+K,U:

取消选定注释内容

Ctrl+左右箭头键:

一次可以移动一个单词

Ctrl+上下箭头键:

滚动代码屏幕,但不移动光标位置。

Ctrl+Shift+L:

删除当前行

Ctrl+E,W:

自动换行

Ctrl+G:

转到指定行

Shift+Alt+箭头键:

选择矩形文本

Alt+鼠标左按钮:

选择矩形文本

Ctrl+Shift+U:

全部变为大写

Ctrl+U:

全部变为小写

Ctrl+D,B:

断点窗口

Ctrl+D,I:

即时窗口

Ctrl+Shift+N:

新建项目

Ctrl+Shift+O:

打开项目

Ctrl+Shift+S:

全部保存

Shift+Alt+C:

新建类

Ctrl+Shift+A:

新建项

Shift+Alt+Enter:

切换全屏编辑

智能提示:

ctrl+J

方法参数提示:

ctrl+shift+空格

Ctrl+F5:

开始执行(不调试)

F9:

切换断点

Ctrl+Shift+F9:

删除全部断点

关闭VS2013中单击打开文件的功能

中文版:

工具--》选项--》环境--》选项卡和窗口--》预览选项卡

去掉“在解决方案资源管理器中预览选定的文件(在按住Alt的同时单击可避免预览)(X)”的勾选

C++中的模板

类模板

1、先建立一个Arry.h的头文件

2、在头文件中写入固定格式

#ifndefARRY_H

#defineARRY_H

…code…

#endif

3、在上一步的code地方创建类模板

template

classArray

{

public:

Array(intsize);//构造函数

boolpush(Telem);//放入值

voiddisplay();//显示函数

private:

T*m_pArr;

intm_iSize;

intm_iLength;

};

4、实现构造函数Array();

template

Array:

:

Array(intsize)

{

m_iSize=size;

m_iLength=0;

m_pArr=newT[m_iSize];

}

5、实现成员方法push();

template

boolArray:

:

push(Telem)

{

if(m_iLength>=m_iSize)

{

returnfalse;

}

m_pArr[m_iLength]=elem;

m_iLength++;

returntrue;

}

6、实现成员方法display();

template

voidArray:

:

display()

{

for(inti=0;i

{

cout<

}

}

7、创建实例化的主函数入口文件

#include

#include"Arry.h"

#include

usingnamespacestd;

intmain(void)

{

Arrayarr1(10);

arr1.push

(2);

arr1.push(4);

arr1.display();

Array*arr2=newArray(10);

arr2->push(5);

arr2->push(6);

arr2->display();

system("pause");

return0;

}

 

C与C++的区别

主要内容:

C与C++的简单区别:

1、建立的文件类型不一样,c语言为.c,c++为.cpp;;

2、引入的头文件不一样;

3、C++有命名空间;

4、输入输出语句不一样;

5、C语言不允许重载,C++可以重载;

6、自定义类型,c语言使用struct,c++使用class;

7、C语言面向过程,c++面向对象;

C++特性

抽象具体事务的定义过程

封装讲操作方法与数据绑定在一起

继承支持单继承、也支持多继承

多态

当c++编译器在编译的时候,发现animal类的breath()函数是虚函数,这个时候c++就会采用迟绑定技术(latebinding)的技术,在运行时,依据对象的类型来确认调用的是哪一个函数,这种能力就叫做c++的多态性;

C++中无访问限定符的时候默认为private

Php中无访问限定符的时候默认为public

结构体中无访问限定符默认为public

这又是结构体与类的不同之处

编写潜规则:

先写private私有数据成员

后写public方法

#include

usingnamespacestd;

structStudent{

inta;

doubleb;

charc;

voidSetData(intxa,doublexb,charxc){

a=xa;

b=xb;

c=xc;

}

};

classCGoods

{

public:

voidRegisterGoods(char[],int,float);//输入数据;

voidCountTotal(void);//计算商品的总价值;

voidGetName(char[]);//读取商品名;

intGetAmount(void);//读取商品数量;

floatGetTotal_Value(void);//读取商品单价;

public:

//访问限定符

charName[21];

intAmount;

floatPrice;

floatTotal_value;

};

C++语言中,函数的参数和返回值的传递方式有三种:

值传递、指针传递和引用传递。

1、以下是“值传递”的示例程序。

由于Func1函数体内的x是外部变量n的一份拷贝,改变x的值不会影响n,所以n的值仍然是0。

Voidfunc1(intx)

{

X=x+10;

}

Intn=0;

Func1(n);

Cout<<”n=”<

2、以下是“指针传递”的示例程序。

由于Func2函数体内的x是指向外部变量n的指

针,改变该指针的内容将导致n的值改变,所以n的值成为10。

Voidfunc2(int*x)

{

(*x)=(*x)+10;

}

Intn=0;

Func2(&n);

Cout<<”n=”<

3、以下是“引用传递”的示例程序。

由于Func3函数体内的x是外部变量n的引用,x

和n是同一个东西,改变x等于改变n,所以n的值成为10。

voidFunc3(int&x)

{

x=x+10;

}

intn=0;

Func3(n);

cout<<“n=”<

对比上述三个实例程序,会发现“引用传递”的性质像“指针传递”,而书写方式像“值传递”。

实际上“引用”所能够做的任何事情“指针”也都能够做。

数据类型

数据类型的本质:

固定大小内存块的别名

B&b数组数据类型,(定义一个:

1、数组类型,2、数组指针,3、数组类型和数组指针类型的关系)

this关键字

构造函数与析构函数

一、构造函数是特殊的共有成员函数,其特征如下:

1、函数名与类名一致

2、构造函数无函数返回类型说明,注意是没有而不是void,即什么也不写,也不能写void!

实际上构造函数有返回值,返回值就是构造函数创建的对象。

3、在程序运行时,当新的对象被建立,该对象所属的类的构造函数被自动调用,在该对象的生存期中也只调用一次。

4、构造函数可以重载,严格的讲说明中可以有多个构造函数,他们由不同的参数表区分,系统自动调用时按一般函数重载的规则进行选择执行。

5、构造函数可以在类中定义也可以在类外定义

6、如果类说明中没有给出构造函数,则C++编译器会自动给出一个带缺省参数的构造函数

类名(void){}

但只要我们定义了一个构造函数,系统就不会自动生成缺省的构造函数,

只要构造函数是无参的或者只要各参数均有缺省值的,C++编译器都会认为是缺省的构造函数,并且缺省的构造函数只能有一个。

如果对象的数据成员全是共有的,也可以在对象名后面加“=”加“{}”

7、构造函数的执行顺序先父类后子类

8、析构函数的执行顺序先子类后父类

指针学习

1、指针理解

double*tax_ptr;

char*str;

//虽然tax_ptr和str指向两种不同长度的数据类型,但是变量本身的长度是相同的,也就是说,char的地址与double的地址是相同的。

地址的长度或值既不能指示关于变量的长度或类型的任何信息,也不能指示改地址上有什么建筑物。

一般来说,地址需要两个还是四个字节,取决于计算机操作系统。

2、指针的危险

C++创建指针时,计算机将分配存储地址的内存,但不会分配用来存储指针所指向的数据的内存。

指针变变量不能赋一个变量进去。

也就是说不能简单的将整数赋值给一个指针变量。

指针不是整形,虽然计算通常把地址当作整数来处理,从概念上看,指针与整数是两个截然不同的概念,整数可以运算,而指针仅仅描述的是位置,两个地址相乘没有任何意义。

3、变量是编译时分配的有名称的内存,而指针只是为可以通过名称访问的内存提供了一个别名。

指针的真正用武之地在于,在运行阶段分配未命名的内存以存储值,在这种情况下只能通过指针来访问。

4、new运算符

New将找到一块长度正确的内存块,并返回该内存块的地址。

程序员要做的是将该地址赋给一个指针。

5、为一个数据对象(可以是结构,也可以是基本类型)获得并指定分配内存的格式:

typeName*pointer_name=newtypeName;

需要在两个地方指定数据类型:

(1)、用来指定需要什么样的内存;

(2)、用来声明合适的指针;

6、基本类型变量的值都被存储在栈(stack)内存区域中,而new从堆(heap)或自由存储区(freestore)的内存区域分配内存。

7、为数组分配内存的通用格式:

Type_name*pointer_name=newtype_name[num_elements];

虚函数

VirtualvoidBreath()=0;//加个virtual函数名=0;就为纯虚函数,纯虚函数没有函数体

含有纯虚函数的类称为抽象类

C++菜单项中同时增加的命令响应函数他们之间的执行传递顺序为

Viewclass->DocClass->MainFrame->AppClass

制作右键菜单

添加事件处理函数

创建系统默认的菜单:

MFC非模态对话框的创建

1、用MFC创建非模态的对话框,和模态对话框创建方式不同,模态对话框用dlg.DoModel()调用,而非模态对话框要用create函数创建调用。

2、IDD_TEST_DLG为已经定义的对话框资源的ID号

CTestDlg*dlg=newCTestDlg;

dlg->Create(IDD_TEST_DLG,NULL);

dlg->ShowWindows(SW_SHOW);//SW_SHOW是对话框的显示方式

3、建立:

//主框架中,即调用/创建非模态对话框的对话框/窗体:

CTestDlg*pDlg=newCTestDlg;

pDlg->Create(IDD_TESTDLG,this);

pDlg->ShowWindow(SW_SHOW);

//非模态对话框中

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2