c++基本知识(1)
2015-12-31 21:26
471 查看
1.C和C++的主要区别是什么?
答:1.C++语言包括过程性语言部分和类部分,过程性语言部分与C并无本质的差别,类部分是C语言中所没有的,它是面向对象程序设计的主体。
2.程序设计方法上已从结构化程序设计走向面向对象程序设计了.
2.结构程序设计和面向对象程序设计的概念
结构化程序设计的主要思想是功能分解并逐步求精。数据与程序分开存储,编程的主要技巧在于追踪哪些函数调用哪些函数,哪些数据发生了变化。
面向对象程序设计的本质是把数据和处理数据的过程当成一个整体----对象。(对象是一种特殊变量----像结构体变量、又增加了相关的操作行为)
面向对象程序设计的实现需要封装和数据隐藏技术、继承和重用技术、多态性技术。
3.什么是类和对象?
类是一组性质相同的对象的程序描述,它由概括了一组对象共同性质的数据和函数组成。是封装的基本单元.
对象是构成世界的一个独立单位,它具有自己的静态特征(状态)和动态特征(操作)。静态特征即可以用某种数据来描述的特征,动态特征即对象所表现的行为或对象所具有的功能。
类与对象的关系:类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。所以,一个对象又称作类的一个实例(instance)。对象是类的实例,类定义了属于该类的所有对象的共同特性。
4. 面向对象程序设计的三大特征是什么?
1.封装(encapsulation): 封装是面向对象方法的一个重要原则。它有两个涵义:第一个涵义是,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。第二个涵义也称作“信息隐蔽”,即尽可能隐蔽对象的内部细节,对外形成一个边界(或者说形成一道屏障),只保留有限的对外接口使之与外部发生联系。这主要是指对象的外部不能直接地存取对象地属性,只能通过几个允许外部使用地服务与对象发生联系。
2.继承(inheritance): (单继承和多继承)子类可以继承父类中的属性和操作,也可以定义自己的属性和操作
3.多态性(polymorphism):在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或操作名在一般类及其各个特殊类中具有不同的语义。
5.类的组成:
class是定义类的关键字。<类名>是一个标识符,用于惟一标识一个类。一对大括号内是类的说明部分,说明该类的所有成员。类的成员包括数据成员和成员函数两部分。类的成员从访问权限上分有以下三类:公有的(public)、私有的(private)和保护的(protected),其中默认为private权限。
1.公有的成员可以被程序中的任何代码访问;
2.私有的成员只能被类本身的成员函数及友元类的成员函数访问,其他类的成员函数,包括其派生类的成员函数都不能访问它们;
3.保护的成员与私有成员类似,只是除了类本身的成员函数和说明为友元类的成员函数可以访问保护成员外,该类的派生类的成员也可以访问。
6.结构体和类的区别是什么?
结构和类的唯一区别是:在未指定访问权限时,结构中的成员被默认为公有的而类中的成员被默认为私有的。
7.类对象的定义方法和对象成员的表示方法
对象的定义方法: <类名><对象名表>;
对象成员的表示方法:<对象名>.<成员名>这里的“.”是一个运算符,该运算符的功能是表示对象的成员。或者指向对象的指针的成员表示如下:<对象指针名>-><成员名>
8.构造函数和析构函数
(1)构造函数是一种用于创建对象特殊的成员函数,当创建对象时,系统自动调用构造函数,不能在程序中直接调用。构造函数名与类名相同,一个类可以拥有多个构造函数(重载),构造函数可以有任意类型的参数,但不能具有返回类型。
(2)析构函数名字为符号“~”加类名,析构函数没有参数和返回值。一个类中只可能定义一个析构函数,所以析构函数不能重载。默认析构函数是一个空函数
(3)使用构造函数的限制:不能被继承,不能说明为虚函数,不能显式调用,不能取构造函数的地址。
9.C++程序的内存布局
C++程序的内存格局通常分为四个区:
(1)全局数据区(data area):存放全局变量、静态数据、常量。
(2)代码区(code area):存放类成员函数、其他函数代码。
(3)栈区(stack area):存放局部变量、函数参数、返回数据、返回地址。
(4)堆区 (heap area) :自由存储区。
答:1.C++语言包括过程性语言部分和类部分,过程性语言部分与C并无本质的差别,类部分是C语言中所没有的,它是面向对象程序设计的主体。
2.程序设计方法上已从结构化程序设计走向面向对象程序设计了.
2.结构程序设计和面向对象程序设计的概念
结构化程序设计的主要思想是功能分解并逐步求精。数据与程序分开存储,编程的主要技巧在于追踪哪些函数调用哪些函数,哪些数据发生了变化。
面向对象程序设计的本质是把数据和处理数据的过程当成一个整体----对象。(对象是一种特殊变量----像结构体变量、又增加了相关的操作行为)
面向对象程序设计的实现需要封装和数据隐藏技术、继承和重用技术、多态性技术。
3.什么是类和对象?
类是一组性质相同的对象的程序描述,它由概括了一组对象共同性质的数据和函数组成。是封装的基本单元.
对象是构成世界的一个独立单位,它具有自己的静态特征(状态)和动态特征(操作)。静态特征即可以用某种数据来描述的特征,动态特征即对象所表现的行为或对象所具有的功能。
类与对象的关系:类给出了属于该类的全部对象的抽象定义,而对象则是符合这种定义的一个实体。所以,一个对象又称作类的一个实例(instance)。对象是类的实例,类定义了属于该类的所有对象的共同特性。
4. 面向对象程序设计的三大特征是什么?
1.封装(encapsulation): 封装是面向对象方法的一个重要原则。它有两个涵义:第一个涵义是,把对象的全部属性和全部服务结合在一起,形成一个不可分割的独立单位(即对象)。第二个涵义也称作“信息隐蔽”,即尽可能隐蔽对象的内部细节,对外形成一个边界(或者说形成一道屏障),只保留有限的对外接口使之与外部发生联系。这主要是指对象的外部不能直接地存取对象地属性,只能通过几个允许外部使用地服务与对象发生联系。
2.继承(inheritance): (单继承和多继承)子类可以继承父类中的属性和操作,也可以定义自己的属性和操作
3.多态性(polymorphism):在一般类中定义的属性或操作被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。这使得同一个属性或操作名在一般类及其各个特殊类中具有不同的语义。
5.类的组成:
class是定义类的关键字。<类名>是一个标识符,用于惟一标识一个类。一对大括号内是类的说明部分,说明该类的所有成员。类的成员包括数据成员和成员函数两部分。类的成员从访问权限上分有以下三类:公有的(public)、私有的(private)和保护的(protected),其中默认为private权限。
1.公有的成员可以被程序中的任何代码访问;
2.私有的成员只能被类本身的成员函数及友元类的成员函数访问,其他类的成员函数,包括其派生类的成员函数都不能访问它们;
3.保护的成员与私有成员类似,只是除了类本身的成员函数和说明为友元类的成员函数可以访问保护成员外,该类的派生类的成员也可以访问。
6.结构体和类的区别是什么?
结构和类的唯一区别是:在未指定访问权限时,结构中的成员被默认为公有的而类中的成员被默认为私有的。
7.类对象的定义方法和对象成员的表示方法
对象的定义方法: <类名><对象名表>;
对象成员的表示方法:<对象名>.<成员名>这里的“.”是一个运算符,该运算符的功能是表示对象的成员。或者指向对象的指针的成员表示如下:<对象指针名>-><成员名>
8.构造函数和析构函数
(1)构造函数是一种用于创建对象特殊的成员函数,当创建对象时,系统自动调用构造函数,不能在程序中直接调用。构造函数名与类名相同,一个类可以拥有多个构造函数(重载),构造函数可以有任意类型的参数,但不能具有返回类型。
(2)析构函数名字为符号“~”加类名,析构函数没有参数和返回值。一个类中只可能定义一个析构函数,所以析构函数不能重载。默认析构函数是一个空函数
(3)使用构造函数的限制:不能被继承,不能说明为虚函数,不能显式调用,不能取构造函数的地址。
9.C++程序的内存布局
C++程序的内存格局通常分为四个区:
(1)全局数据区(data area):存放全局变量、静态数据、常量。
(2)代码区(code area):存放类成员函数、其他函数代码。
(3)栈区(stack area):存放局部变量、函数参数、返回数据、返回地址。
(4)堆区 (heap area) :自由存储区。
相关文章推荐
- iOS 开发OC语言(六) Block语法简介
- C++11中async中future用法(一)
- Callbacks (Bruce Eckel's Thinking in C++, 2nd Ed)
- c++基础--auto类型说明符/decltype类型指示符
- Sicily 3725.陶陶考试
- c++基础--类型别名
- C语言中函数的参数列表为空和void的区别
- C语言写的工具箱
- new与malloc的区别,以及内存分配浅析
- 611C. New Year and Domino【二维前缀和】【容斥】
- 找出整型数组中最大和最小值及其所在位置
- C语言中把数字转换为字符串 【转】
- 我眼中的c++编程总结-20150602
- 编程学习笔记之c++相关::RTTI中的typeid介绍
- C语言实现顺序表的增删查改以及排序
- C语言小写字母转换为大写字母
- C++ unordered_map自定义KEY用法以及insert无法覆盖解决办法
- c++基础-- const 限定符
- C++ iostream的线程安全性问题
- 【C语言】关于宏定义中#和##符号的使用和宏定义展开问题